Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
我们的愿景是成为 Mybatis
最好的搭档,就像 魂斗罗 中的1P、2P,基友搭配,效率翻倍。
官方网站:http://mp.baomidou.com/
Gitee | Github
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`teacher_id` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '小学生', '安徽', 1);
INSERT INTO `user` VALUES (2, '小学生', '安徽', 1);
INSERT INTO `user` VALUES (3, '小学生', '安徽', 1);
INSERT INTO `user` VALUES (4, '小学生', '安徽', 1);
INSERT INTO `user` VALUES (5, '小学生', '北京', 2);
INSERT INTO `user` VALUES (6, '小学生', '北京', 2);
INSERT INTO `user` VALUES (7, '小学生', '北京', 2);
INSERT INTO `user` VALUES (8, '小学生', '北京', 2);
INSERT INTO `user` VALUES (9, '小学生', '北京', 2);
INSERT INTO `user` VALUES (10, '小学生', '北京', 2);
INSERT INTO `user` VALUES (11, '小学生', '北京', 3);
INSERT INTO `user` VALUES (12, '小学生', '上海', 3);
INSERT INTO `user` VALUES (13, '小学生', '上海', 3);
INSERT INTO `user` VALUES (14, '小学生', '上海', 3);
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!--mybatis Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
<!--mybatis puls 整合Springboot-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.3</version>
</dependency>
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mptest?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 加载Mybatis映射文件
#mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis-plus.type-aliases-package=com.csdn.po
mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml
mybatis-plus.configuration.map-underscore-to-camel-case=true
public interface UserMapper extends BaseMapper<User> {
}
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserMapper userMapper;
public void test(){
userMapper.insert();
//delete
//updatebyid
//add
//selectList
//selectPage
//省略.
}
}
以上是基本的 CRUD 操作,如您所见,我们仅仅需要继承一个 BaseMapper 即可实现大部分单表 CRUD 操作。BaseMapper 提供了多达 17 个方法给大家使用, 可以极其方便的实现单一、批量、分页等操作。极大的减少开发负担
Mybatis-Plus 通过 EntityWrapper(简称 EW,MP 封装的一个查询条件构造器)或者Condition(与 EW 类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担,能够有效提高开发效率
实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等
注意: 使用的是数据库的字段,不是java的属性名称
条件参数说明:
查询方式 | 说明 |
---|---|
setSqlSelect | 设置 SELECT 查询字段 |
where | WHERE 语句,拼接 + WHERE 条件 |
and | AND 语句,拼接 + AND 字段=值 |
andNew | AND 语句,拼接 + AND (字段=值) |
or | OR 语句,拼接 + OR 字段=值 |
orNew | OR 语句,拼接 + OR (字段=值) |
eq | 等于= |
allEq | 基于 map 内容等于= |
ne | 不等于<> |
gt | 大于> |
ge | 大于等于>= |
lt | 小于< |
le | 小于等于<= |
like | 模糊查询 LIKE |
notLike | 模糊查询 NOT LIKE |
in | IN 查询 |
notIn | NOT IN 查询 |
isNull | NULL 值查询 |
isNotNull | IS NOT NULL |
groupBy | 分组 GROUP BY |
having | HAVING 关键词 |
orderBy | 排序 ORDER BY |
orderAsc | ASC 排序 ORDER BY |
orderDesc | DESC 排序 ORDER BY |
exists | EXISTS 条件语句 |
notExists | NOT EXISTS 条件语句 |
between | BETWEEN 条件语句 |
notBetween | NOT BETWEEN 条件语句 |
addFilter | 自由拼接 SQL |
last | 拼接在最后,例如:last(“LIMIT 1”) |
问题:年龄在 18~50 之间性别为男且姓名为 马 的所有用户
/**
* 年龄在 18~25 之间性别为男且姓名为 马 的所有用户
*/
@Test
public void testFindListEntityWrapper(){
CustomerMapper mapper = context.getBean(CustomerMapper.class);
EntityWrapper<Customer> entityWrapper = new EntityWrapper<Customer>();
entityWrapper.between("age",18,25)
.eq("gender",0)
.like("cust_name","马");
Page<Customer> page = new Page<Customer>(1,30);
List<Customer> list = mapper.selectPage(page, entityWrapper);
for (Customer customer : list) {
System.out.println(customer);
}
}