spring boot整合mybatis-plus

it2024-11-08  18

mybatis-plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

1、添加依赖:

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency>

(1)、application.yml中的mybatis-plus参数配置

mybatis-plus: mapper-locations: classpath:mapper/*.xml #xml所在位置 不设置默认是在mapper类同级 type-aliases-package: com.example.demo.*.entity #对应的实体类 configuration: mapUnderscoreToCamelCase: true # 开启驼峰匹配 默认为true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印sql语句和入参数据 global-config: db-config: logic-delete-value: 1 #逻辑删除 配合@TableLogic注解 logic-not-delete-value: 0 #逻辑不删除 update-strategy: not_null # 更新时字段如果为null,就不进行更新该字段。 insert-strategy: not_null # 插入时如果字段为null,就不插入数据,建议数据库表字段设置默认值

2、添加分页和mapper扫描

启动类

在启动类添加 @MapperScan 就不用再 UserDao 上用 @Mapper 注解。

@SpringBootApplication @MapperScan("cn.rj.springboot.dao") public class SpringBootMybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(SpringBootMybatisPlusApplication.class, args); } }

分页
@Configuration public class MybatisPlusConfiguration { /** * mybatis-plus分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor page = new PaginationInterceptor(); //设置分页数据库类型 page.setDbType(DbType.MYSQL); page.setDialect(new MySqlDialect()); //优化count sql page.setCountSqlParser(new JsqlParserCountOptimize(true)); //设置每页最大值 page.setLimit(999L); return page; } }

3、实体类的创建

@TableName(value="t_user") public class UserEntity { @TableId(value="id",type=IdType.AUTO) private Long id; private String userName; private String userSex; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; } }

@TableName 指定数据库表名,否则默认查询表会指向 user_entity ;@TableId(value=”id”,type=IdType.AUTO) 指定数据库主键,否则会报错。

4、创建一个Mapper类继承BaseMapper,就可以简单使用了。

​ 可以参考官方文档入门:https://mp.baomidou.com/guide/quick-start.html

继承 BaseMapper,T表示对应实体类
public interface UserDao extends BaseMapper<UserEntity>{ }

5、示例:

5.1 新增用户
UserEntity user=new UserEntity(); user.setUserName("洋洋"); user.setUserSex("男"); userDao.insert(user);
5.2 根据id修改用户
UserEntity user=new UserEntity(); user.setUserName("洋洋"); user.setUserSex("男"); user.setId(01L); userDao.updateById(user);
根据entity条件修改用户信息
UserEntity user=new UserEntity(); user.setUserSex("女"); userDao.update(user,new QueryWrapper<UserEntity>().eq("user_name", "洋洋"));
5.3 根据ID查询
UserEntity user = userDao.selectById(id);
根据entity的条件查询总记录数
int count = userDao.selectCount(new QueryWrapper<UserEntity>().eq("user_sex", "男"));
根据entity条件查询一条记录,返回的是实体

(*如果表内有两条或以上的相同数据则会报错,可以用来判断某类数据是否已存在 根据entity条件查询返回第一个字段的值(返回id列表))

QueryWrapper<UserEntity> queryWrapper=new QueryWrapper<UserEntity>(); UserEntity user=new UserEntity(); user.setUserName("洋洋"); user.setUserSex("男"); queryWrapper.setEntity(user); user = userDao.selectOne(queryWrapper);
根据map条件查询返回多条数据
Map<String, Object> map=new HashMap<String, Object>(); map.put("user_name", username); map.put("user_sex",sex); List<UserEntity> list = userDao.selectByMap(map);
根据entity条件查询返回多条数据(List)
Map<String, Object> map=new HashMap<String, Object>(); map.put("user_sex","男"); List<UserEntity> list = userDao.selectList(new QueryWrapper<UserEntity>().allEq(map));
根据entity条件查询返回多条数据(List )</map
Map<String, Object> map=new HashMap<String, Object>(); map.put("user_sex","男"); List<Map<String, Object>> list = userDao.selectMaps(new QueryWrapper<UserEntity>().allEq(map));
根据ID批量查询
List<Long> ids=new ArrayList<Long>(); ids.add(1L); ids.add(2L); ids.add(3L); List<UserEntity> list = userDao.selectBatchIds(ids);

主键ID列表(不能为 null 以及 empty)

分页查询
Page<UserEntity> page=userDao.selectPage(new Page<>(1,5), new QueryWrapper<UserEntity>().eq("user_sex", "男")); Page<Map<String, Object>> page=userDao.selectMapsPage(new Page<>(1,5), new QueryWrapper<UserEntity>().eq("user_sex", "男"));

需先配置分页插件bean,否则分页无效。如有pagehelper需先去除,以免冲突。 new Page<>(1,5),1表示当前页,5表示页面大小。

5.4 删除
根据id删除用户
userDao.deleteById(1);
根据entity条件删除用户
userDao.delete(new QueryWrapper<UserEntity>().eq("id", 1));
根据map条件删除用户
Map<String, Object> map=new HashMap<String, Object>(); map.put("user_name", "zwqh"); map.put("user_sex","男"); userDao.deleteByMap(map);
根据ID批量删除
List<Long> ids=new ArrayList<Long>(); ids.add(1L); ids.add(2L); ids.add(3L); userDao.deleteBatchIds(ids);

主键ID列表(不能为 null 以及 empty)

最新回复(0)