【自用】mybatis plus

0211mybatisplus

dev 那个是热部署

添加链接描述

1.mybatisplus意义

baomidou在mybatis的基础上开发的一款mybatis增强框架。为简化mybatis开发而生。对mybatis只做增强不做任何改变。mp针对的单表的crud操作的简化。mp还提供了丰富的功能提高开发效率。

2.安装mp环境

  • 添加mybatis-plus启动器依赖:
<!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mp启动器,不能与mybatis启动器共存-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

3.简单入门

  • 在yml文件中配置mysql数据库连接信息
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/javasm?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: root
    druid:
      initial-size: 5
  • 编写mapper接口,从BaseMapper接口派生,指定泛型为实体类。
public interface SysuserMapper extends BaseMapper<Sysuser> {
}
  • 测试mp
@Resource
    private SysuserMapper um;
    @Test
    void contextLoads() {
        List<Sysuser> sysUsers = um.selectList(null);
    }

4.mp注解

以下注解都是用在实体类中的。

  • TableName
用在实体类上,当实体类的名称与表的名称不一致时,该注解用来指定表名。
  • TableId
用在实体的主键属性上,指定某个属性对应的数据库主键列,并可以指定列名

当指定了id属性后,selectById,deleteById,updateById可以使用。

在insert操作中,id支持自动生成,有如下生成策略:
ASSIGN_ID:要求属性String,数据库列类型是varchar;底层使用雪花id。
ASSIGN_UUID:随机uuid作为唯一id生成,不建议使用,太长
INPUT:自己输入,mp不做id生成。
AUTO:要求属性Integer,数据库列是数值。并启用数据库自增。
  • TableField
用在实体类的非主键属性上。
使用场景1:如果属性名与列名不一致;(一般不会这样)
使用场景2:实体类中的辅助属性,这些属性不属于数据库列,使用@TableField(exist = false)声明。
使用场景3:条件查询,用来指定where条件,默认是等值查询,使用 @TableField(condition = SqlCondition.LIKE)
使用场景4:默认空值也作为查询条件来进行生成,使用@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
  • Version(不重要)
乐观锁注解,用在实体类的属性上。避免多人更新同一条记录。
1.在数据库列添加version乐观锁列,类型是int型。
2.在实体类的成员变量添加乐观锁属性,使用Version注解。
3.注册乐观锁插件。

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
   MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
   //乐观锁插件
   interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
   return interceptor;
}
  • OrderBy
用在实体的类的属性上,用来指定排序字段。
  • TableLogic
逻辑删除注解,用在实体类的属性上。对强关联数据,不能做物理删除。
1.在数据库列添加删除标记字段deleted,0:未删除,1:已删除
2.在yml中配置逻辑删除信息
mybatis-plus:
  type-aliases-package: com.javasm
  global-config:
    db-config:
      logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
3.整个项目组所有表的逻辑删除字段都必须叫deleted。     

5.Wrapper构建器对象

queryWrapper 的缩写是什么意思

添加链接描述

QueryWrapper:应用在select,delete

使用方式1:接收实体对象,按照对象属性名进行where查询。比如:new QueryWrapper(接收实体对象)

Sysuser u = new Sysuser();
u.setUname("");
u.setUphone("1");
QueryWrapper<Sysuser> queryWrapper = new QueryWrapper<>(u);
List<Sysuser> sysusers = um.selectList(queryWrapper);

方法方式2:调用QueryWrapper对象各种方法灵活的拼接条件,比如,eq,isNull,isNotNUll,like,ge。。。。

    @Test
    void selectUsersByIds() {
        String[] ids=new String[]{"1","2"};
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.in("uid",ids);
        List<Sysuser> sysusers = um.selectList(queryWrapper);
        System.out.println(sysusers);
    }
    
    @Test
    void selectUserByEmail(){
        String email="fythnu@163.com";
        //按照邮箱账号查询用户
        QueryWrapper w = new QueryWrapper();
        w.like("uemail",email);
        w.eq("uname","admin");
        w.or();
        w.gt("create_time","2021-12-20 10:51:41");
        List<Sysuser> list = um.selectList(w);
    }

QueryWrapper两种方式可以混合用,即接收实体,也自定义条件。

UpdateWrapper:应用在update语句

应用在update方法,一般是按照其他非主键字段进行条件更新。
UpdateWrapper w = new UpdateWrapper();
w.eq("uemail","fythnu@163.com");
Sysuser u =new Sysuser();
u.setUpwd("345");
int update = um.update(u, w);//update sys_user set upwd='345' where uemail=''

6.分页插件

mp中有内嵌的分页插件,也支持原生的pageHelper插件。建议仍然使用原生的pageHelper分页插件

<!--如果项目中原来已经有pageHelper启动器,要使用mp中内嵌分页插件的话,需要移出jsqlparser,避免包冲突-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.github.jsqlparser</groupId>
                    <artifactId>jsqlparser</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
Page p  = new Page(1,2);
um.selectPage(p, null);
System.out.println(p);

要求:数据命名,主键列id,create_time,update_time.create_by,update_by,version,deleted

7.代码生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值