- # 介绍
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(摘自mybatis-plus官网)Mybatis虽然已经给我们提供了很大的方便,但它还是有不足之处,MP的存在就是为了稍稍弥补Mybatis的不足。在我们使用Mybatis时会发现,每当要写一个业务逻辑的时候都要在DAO层写一个方法,再对应一个SQL,即使是简单的条件查询、即使仅仅改变了一个条件都要在DAO层新增一个方法,针对这个问题,MP这样一个框架,一种集Mybatis与Hibernate的优点一起的框架。它提供了Hibernate的单表CURD操作的方便同时,又保留了Mybatis的特性。
-
SpringBoot集成
-
配置
pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-core</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>3.1.0</version> </dependency>
-
编辑
application.yml
server: port: 8080 spring: application: name: boot-admin profiles: active: dev datasource: type: com.alibaba.druid.pool.DruidDataSource druid: filter: stat,wall,logging driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/jjckj_boot?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false username: root password: abel123 initial-size: 1 min-idle: 1 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 'X' test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: false max-pool-prepared-statement-per-connection-size: 20 aop: proxy-target-class: true auto: true mybatis-plus: mapper-locations: classpath:/mappers/*Mapper.xml type-aliases-package: com.jjckj.boot.model.entity global-config: db-config: id-type: auto field-strategy: not_empty table-underline: true logic-delete-value: 1 logic-not-delete-value: 0 configuration: map-underscore-to-camel-case: true cache-enabled: false jdbc-type-for-null: 'null'
-
创建
Users
对象@Data @Accessors(chain = true) public class Users extends BaseEntity { private static final long serialVersionUID = -1437321349541571114L; /** * 主键 */ @TableId(value = "id", type = IdType.INPUT) private Long id; /** * 备注 */ private String remark; /** * 登录名 */ private String username; /** * 登录密码 */ private String password; /** * 邮件 */ private String email; /** * 手机号码 */ private String mobile; /** * 创建者ID */ private Long creatorId; /** * 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; /** * 操作人ID */ private Long modifierId; /** * 操作时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date modifyTime; /** * 是否删除 1-删除,0-未删除 */ private String delFlag; }
-
创建
UsersMapper.xml
<?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.jjckj.boot.mapper.UsersMapper"> </mapper>
-
创建
UsersMapper
public interface UsersMapper extends BaseMapper<Users> { }
-
创建
UsersService
public interface UsersService extends IService<Users> { }
-
创建
UsersServiceImpl
@Service public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService { }
-
测试
Mapper
private void deleteUsersWithRole(Long userId) { QueryWrapper<RoleUser> roleUserQueryWrapper = new QueryWrapper<>(); roleUserQueryWrapper.lambda().eq(RoleUser::getUserId, userId); roleUserMapper.delete(roleUserQueryWrapper); } @Override public List<Users> getAllList() { QueryWrapper<Users> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(PageElement::getDelFlag, DelFlagEnum.NORMAL.getCode()); List<Users> userList = wrapper.selectList(wrapper); return userList; }
-
测试
Service
@Override public Wrapper<Boolean> update(@RequestBody Users users) { return WrapMapper.ok(usersService.updateById(users)); } @Override public Wrapper<Boolean> delete(@PathVariable("id") Long id) { return WrapMapper.ok(usersService.removeById(id)); } @Override public Wrapper<Users> get(@PathVariable("id") Long id) { return WrapMapper.ok(usersService.getById(id)); }
-
-
总结
本文主要是对
Mybatis-plus
的集成和简单使用进行了说明,详细的用法,可到官网查看,官网有详细的使用指南,这里就不班门弄斧了。至此,对于一般的开发需求基本上都可以满足了。