当前位置: 首页 > 科技观察

手把手教你使用MyBatisPlus

时间:2023-03-22 13:22:21 科技观察

大家好,我是北君。在本文中,我们使用MyBatisPlus对表进行CRUD操作,看看它如何简化我们的开发。1.创建测试表创建USER表:DROPTABLEIFEXISTS`user`;CREATETABLE`user`(`ID`int(11)NOTNULL,`USER_NAME`varchar(32)COLLATEutf8mb4_binDEFAULTNULL,`USER_AGE`int(11)DEFAULTNULL,PRIMARYKEY(`ID`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_bin;向USER表中插入两条数据:INSERTINTO`user`VALUES('1','ITCola','18');INSERTINTO`user`VALUES('2','YSOcean','22');打开表格,发现两条数据:2.创建一个SpringBoot项目通过IDEA创建一个SpringBoot项目,如果无法连接https://start.spring.io/URL,可以将URL改为https://start.aliyun.com/,如下图:3.导入依赖com.baomidoumybatis-plus-boot-starter3.3.2mysqlmysql-connector-javaruntime首先我们导入最新版本3.3.2进入mybatis-plus。另外,由于我的数据使用的是MySql,所以这里引入了Mysql的连接依赖。另外,为了简化JavaBean类的编写,我这里额外引入了一个lombok插件依赖。org.projectlomboklomboktrue通过对这个依赖的相关解释,我们可以避免编写繁琐的get/set方法.4.编写数据库配置文件在springboot项目的resource目录下,新建一个application.yml文件,添加如下内容:server:port:8082spring:datasource:url:jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=UTF-8用户名:root密码:root#>=6.x:com.mysql.cj.jdbc.Driver#<=5.x:com.mysql.jdbc.Driverdriver-class-name:com.mysql.cj.jdbc.Driver注意:url中填写的mybatisplus是我的数据库名,注意修改,username和password分别填写自己的数据库连接名和密码。5.编写代码①,实体类User.java@Getter@SetterpublicclassUser{privateLongid;私有字符串用户名;privateStringuserAge;}②、创建UserMapper接口importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.ys.mybatisplusstudy.entry.User;publicinterfaceUserMapperextendsBaseMapper{}③,为启动类添加@MapperScan注解@SpringBootApplication@MapperScan("com.ys.mybatisplusstudy.mapper")publicclassMybatisplusstudyApplication{publicstaticvoidmain(String[]args){SpringApplication.run(MybatisplusstudyApplication.class,args);}}如果不想在启动类上加上@MapperScan注解,也可以在每个Mapper接口上加上@Mapper注解。上面所有的配置都已经完成了,是不是很简单,接下来我们就对这张表进行CRUD测试。6、CRUD测试我们写UserMapper接口的时候,它继承了一个BaseMapper接口:publicinterfaceUserMapperextendsBaseMapper{}我们进入BaseMapper内部,发现它的结构如下:这些方法都是我们常用的加法,删除、修改和检查,我们来演示几个常用的。①、插入:添加一条新记录@SpringBootTestclassMybatisplusstudyApplicationTests{@AutowiredprivateUserMapperuserMapper;/***添加一条新记录*/@TestpublicvoidtestInsert(){Useruser=newUser();用户.setId(3L);user.setUserName("测试插入");user.setUserAge("1");intinsert=userMapper.insert(user);System.out.println("受影响的记录数:"+insert);}}执行完成最后我们查看数据库:②、删除:删除记录/***根据id删除一条记录*/@TestpublicvoidtestDeleteById(){intnum=userMapper.deleteById(3L);System.out.println("删除的记录条数为:"+num);QueryWrapper包装器=newQueryWrapper();wrapper.eq("id",3L);userMapper.delete(包装器);}/***构造删除记录的相关条件*/@TestpublicvoidtestDelete(){QueryWrapperwrapper=newQueryWrapper();wrapper.eq("USER_NAME","测试插入");intnum=userMapper.delete(wrapper);System.out.println("删除的记录条数为:"+num);}③、更新:修改记录/***根据id修改*/@TestpublicvoidtestudpateById(){用户user=newUser();user.setId(3L);user.setUserName("测试更新");intnum=userMapper.updateById(user);System.out.println("修改记录数为:"+num);}④、select:查询记录/***查询User表中的所有记录*/@TestpublicvoidtestSelectAll(){Listusers=userMapper.selectList(null);users.forEach(x->System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge()));}/***查询指定记录*/@TestpublicvoidtestSelectWrapper(){QueryWrapperwrapper=newQueryWrapper();wrapper.eq("用户名","IT可乐");列表<用户>users=userMapper.selectList(wrapper);users.forEach(x->System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge()));}没发现,增删改查都这么流畅流畅,不用写SQL语句当然这只是简单的单表玩法,后面会介绍进阶的玩法.7、打印SQL语句这里有一个小知识点,通过下面的配置,我们可以查看执行过的SQL语句日志。在applicatio.yml文件中配置如下:#配置slq打印日志mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpl当然这个配置只是将SQL日志打印到控制台方便我们调试,后面会介绍更强大的SQL分析工具。