【笔记】mybatis-plus基础使用
基于springboot
导包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
User实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("t_user")//默认将类名作为表名
public class User {
//标记主键
@TableId(type = IdType.AUTO)//value = "id",不标记数据库自增则会自动生成非常大数字
private String id;
//解决字段映射
@TableField("name")
private String name;
private Integer age;
private Date bir;
// @TableField(exist = false)//不映射数据库表中的字段
}
userDao
//使用mybatis-plus增强接口
@Mapper
public interface UserDAO extends BaseMapper<User> {
}
测试类TestUserDao
@SpringBootTest
public class TestUserDAO {
@Resource
private UserDAO userDAO;
//查询所有
@Test
public void testFindAll(){
List<User> users = userDAO.selectList(null);
for (User user : users) {
System.out.println(user);
}
}
//findById
@Test
public void testFindById(){
User user = userDAO.selectById("2");
System.out.println("user = " + user);
}
//条件查询
@Test
public void testFind(){
// 表示条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("age",23);//等值查询
// queryWrapper.lt("age",23);//设置小于查询
// queryWrapper.le("age",23);//设置等于查询
// gt ,ge 大于
queryWrapper.like("name","小");
List<User> userList = userDAO.selectList(queryWrapper);
userList.forEach(user -> System.out.println("user = " + user));
// userList.forEach(new Consumer<User>() {
// @Override
// public void accept(User user) {
// System.out.println("user = " + user);
// }
// });
}
//插入
@Test
public void TestSave(){
User entity = new User();
entity.setName("小明").setAge(45).setBir(new Date());
userDAO.insert(entity);
}
//基于id修改
@Test
public void TestUpdateById(){
User user = userDAO.selectById("2");
user.setName("chenyn");
userDAO.updateById(user);
}
//基于条件的修改
@Test
public void testUpdate(){
User user = userDAO.selectById("2");
user.setName("小红");
// set(null)为不修改
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age",23);
userDAO.update(user, wrapper);
}
//根据id删除
@Test
public void TestDeleteById(){
userDAO.deleteById("3");
}
//分页查询
@Test
public void testFindPage(){
//参数1:当前页(默认 1) 参数2:每页显示记录数(默认 10)
IPage<User> page = new Page<>(1,2);
//参数1:page 参数2:条件
IPage<User> userIPage = userDAO.selectPage(page,null);
//获取总记录条数
long total = userIPage.getTotal();
System.out.println("total = " + total);
userIPage.getRecords().forEach(user -> {
System.out.println("user = " + user);
});
}
}
分页查询必须配置分页插件
//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
最简单配下面就行
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}