MyBatis-Plus 是国内一款非常实用且优秀的ORM框架。在原生MyBatis的基础上有增添了许多CRUD操作,省去了很多书写SQL语句的时间,极大的提高了开发者的开发效率。本篇主要概述基本的数据库CRUD操作

图片来源 https://mp.baomidou.com/guide
本篇是基于SpringBoot整合MyBatisPlus(以下简称Mp),但是本人在学习的时候也做原生MyBatis+Mp,Spring+Mp 这两个整合版本。有需要的小伙伴可以找我拉代码~
一:添加pom依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></dependency></dependencies>
二:创建与数据库对应的pojo类
/*** 用户实体类对象*/@Data@TableName("tb_user")public class User {//在yml文件中已经设置了全局的id策略,所以可以注释掉//@TableId(type = IdType.AUTO)private Integer id;private String userName;private Date birthday;@TableField(select = false) //查询时不返回字段的值,可得保护数据private String sex;//private String address;@TableField("address") //这个注解用于映射Java类中的属性名与数据库中的不同且又不是驼峰private String addresses;@TableField(exist = false)private String email; //在数据库中不存在该字段 不加会报错}
三:定义操作数据库的Mapper接口
public interface UserMapper extends BaseMapper<User> {}
四:定义SpringBoot启动类
@SpringBootApplication@MapperScan("com.ethan.sample.mapper")public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);}}
五:创建application.yml配置文件
server:port: 8085spring:application:name: mp-springBootdatasource:url: jdbc:mysql://127.0.0.1:3306/mpusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver# 学习MyBatisPlus的配置mybatis-plus:# 指定全局的配置文件#config-location: classpath:mybatis-config.xml# 指定Mapper.xml文件路径#mapper-locations: classpath*:mybatis/*.xml# 扫描包指定别名type-aliases-package: com.ethan.sample.pojo# 开启下划线转驼峰 默认是true,可以不用理这个配置configuration:map-underscore-to-camel-case: true# 二级缓存 默认truecache-enabled: true# 全局的id生成策略global-config:db-config:id-type: auto #自增长# 全局表名前缀table-prefix: tb_

项目结构
经过上面五步,SpringBoot整合MyBatis就大功告成了。
六:强大的条件包装器
Mp内置的Wrapper条件包装器可以帮助我们定义复杂的的条件,从而操作数据库。
Wrapper是一个抽象类,我们可以创建其子类QueryWrapper,用于封装各种条件。
测试一:根据条件删除数据
@Testpublic void testDelete(){/*** 用法一*///根据包装条件做删除,eq之间是and关系/*QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.eq("user_name","张三").eq("sex","男");*//*** 用法二 推荐 ,更面向对象*/User user = new User();user.setAddresses("GZ");user.setUserName("张三");//把user对象传进来 这个user用于封装条件QueryWrapper<User> wrapper = new QueryWrapper<>(user);userMapper.delete(wrapper);}
测试二:根据条件做更新操作
@Testpublic void testUpdate(){/*** 第一种方式:根据其他字段条件更新方法*/User user = new User();user.setAddresses("SH"); //需要更新的字段参数user.setUserName("王五");//根据条件做更新//修改姓名为李四的行数据 QueryWrapper 用户封装匹配的条件//QueryWrapper<User> wrapper = new QueryWrapper<>();//wrapper.eq("user_name","王五"); //匹配条件 user_name=李四 的行的数据//这个user1用于封装条件User user1 = new User();user1.setUserName("张三");QueryWrapper<User> wrapper = new QueryWrapper<>(user1);userMapper.update(user,wrapper);}
测试三:分页查询,首先需要定义一个配置类,将分页拦截器注入IOC容器中
@Configurationpublic class MpConfiguration {//配置分页插件@Beanpublic PaginationInterceptor paginationInterceptor(){return new PaginationInterceptor();}
分页测试
@Testpublic void testSelectPage(){//创建分页查找的一些参数,当前页,每页的数据大小Page<User> page = new Page<>(1,2);//设置查询条件 ,也可以不设置,到时候在第二个参数写成null就行QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.gt("birthday","1910-01-01");IPage<User> userIPage = userMapper.selectPage(page, wrapper);List<User> records = userIPage.getRecords();records.forEach(System.err::println);}
总结:Mp提供了非常多的对数据库操作的API,同样他也能支持扩展,当需要表连接等复杂的SQL语句需要自己定义时,我们也能自己手动书写。正如他的官网所写的一样:为简化开发而生。
文章转载自一十二章经,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




