A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

-前言
  mybatis plus是对mybatis的增强,集成mybatis plus后,简单的CRUD和分页就不用写了,非常方便,五星推荐;

1-集成
1-1、添加依赖
[url=][/url]
        <!-- 9、集成mybatis-plus  -->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.2.0</version>        </dependency>[url=][/url]


1-2、配置文件增加配置
#mybatis-plusmybatis-plus.mapper-locations=classpath:mapper/*Mapper.xmlmybatis-plus.type-aliases-package=com.anson.modelmybatis-plus.configuration.map-underscore-to-camel-case=true

1-3、配置类中增加分页bean
    @Bean    public PaginationInterceptor paginationInterceptor() {        return new PaginationInterceptor();    }

1-4、model(工具生成即可)
[url=][/url]
package com.anson.model;import java.io.Serializable;public class User implements  Serializable{    //----------------------------    private Integer id;    private String username;    private String password;    private String realname;    //---------------------------    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username == null ? null : username.trim();    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password == null ? null : password.trim();    }    public String getRealname() {        return realname;    }    public void setRealname(String realname) {        this.realname = realname == null ? null : realname.trim();    }}[url=][/url]


1-5、mapper(XML)
[url=][/url]
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.anson.dao.UserMapper">  <resultMap id="BaseResultMap" type="com.anson.model.User">    <id column="id" jdbcType="INTEGER" property="id" />    <result column="userName" jdbcType="VARCHAR" property="username" />    <result column="passWord" jdbcType="VARCHAR" property="password" />    <result column="realName" jdbcType="VARCHAR" property="realname" />  </resultMap>  <sql id="Base_Column_List">    id, userName, passWord, realName  </sql></mapper>[url=][/url]


1-6、dao(mapper类),继承 BaseMapper
[url=][/url]
package com.anson.dao;import com.anson.model.User;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import javafx.scene.control.Pagination;import org.apache.ibatis.annotations.Select;import org.springframework.stereotype.Repository;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import java.util.List;@Repositorypublic interface UserMapper extends BaseMapper<User>{}[url=][/url]


1-7、service 继承 ServiceImpl
[url=][/url]
package com.anson.service;import com.anson.dao.UserMapper;import com.anson.model.User;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class UserService extends ServiceImpl<UserMapper, User>{    @Autowired    UserMapper usermapper;}[url=][/url]


1-8、controller
  看见没,以上基本没有一行代码,但是在controller我们已经可以直接使用增删查改和分页了
[url=][/url]
//-----------mybatis plus--------------------    //1、增        User user= new User();        user.setId(6);        user.setUsername("anson");        user.setPassword("1236216");        user.setRealname("王琪琪");        userservice.save(user);    }    //2、删
        userservice.removeById(id);//3、查        User b =userservice.getById(id);//4、改        User update = new User();        update.setId(6);        update.setUsername("alex2266");        userservice.updateById(update);}    //5、分页        IPage<User> page=new Page(1,3);        page = userservice.page(page);
[url=][/url]


怎么样,是不是很爽,项目中,只有少部分特殊的操作需要单独写SQL和方法,大部分CRUD都不需要写了


2、注意的地方
  mybatis中,对于下划线“_”,默认是转换成大写字母处理的,比如我们数据库表字段“update_time”,mybatis会转换成“updateTime”;
所以,为了避坑,直接给出强制建议(或者说结论):
  1、数据库表设计,不要采用大小写,一律小写,多个单词组合采用下划线连接,如字段“update_time”、“edit_by”
  2、model中,所有采用下划线的字段,转换成驼峰大小写,如:
    “update_time” 在实体类中为:“updateTime”,
    “edit_by” 在实体类中为: “editBy”


3、mybatis plus强大的条件构造器queryWrapper、updateWrapper
  muybatis plus 可以通过条件构造器增加各种查询和更新条件,有以下四种条件构造器(主要用后两种,Lambda则看个人喜好):
    LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
    LambdaUpdateWrapper : Lambda 更新封装Wrapper
    QueryWrapper : Entity 对象封装操作类,不是用lambda语法
    UpdateWrapper : Update 条件封装,用于Entity对象更新操作

先贴张常用条件构造器函数图(图片来源于网络):

例子:
[url=][/url]
        //1、根据条件删除        QueryWrapper<User> queryWrapper = new QueryWrapper<>();        queryWrapper                .isNull("username")                .ge("id", 12)                .isNotNull("realname");        boolean delete = userservice.remove(queryWrapper);        //2、根据条件查询        QueryWrapper<User> queryWrapper2 = new QueryWrapper<>();        queryWrapper2.eq("username", "eee");        User user = userservice.getOne(queryWrapper2);        //3、根据条件查询并分页        Page<User> page2 = new Page<>(1, 5);        QueryWrapper<User> queryWrapper3 = new QueryWrapper<>();        queryWrapper3.like("username", "a");        IPage<User> userIPage = userservice.page(page2, queryWrapper3);        //4、根据条件更新        User user2 = new User();        user2.setRealname("zhangsan");        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();        userUpdateWrapper.eq("username", "eee");        boolean update = userservice.update(user, userUpdateWrapper);[url=][/url]



1 个回复

倒序浏览
有问题联系小优:DKA-2018
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马