当前位置:   article > 正文

springboot集成mybatisPlus_selectpage(com.baomidou.mybatisplus.core.metadata.

selectpage(com.baomidou.mybatisplus.core.metadata.ipage

这一章记录一下springboot集成mybatisPlus的buho步骤以及其中遇到的问题

1、首先介绍一下,mybatisPlus

根据官方文档的介绍,MybatisPlus(简称mp)是对mybatis的增强而不做改变,只为ti提高效率简化开发,具体参见http://mp.baomidou.com/#/?id=%e7%ae%80%e4%bb%8b

2、开始集成mybatis-plus

  •       引入依赖的jar包
    1. <!--spring boot mybatis plus依赖-->
    2. <!--该依赖已经包含mybatis及mybatis-spring依赖,勿重复加入以免引起冲突-->
    3. <dependency>
    4. <groupId>com.baomidou</groupId>
    5. <artifactId>mybatis-plus-boot-starter</artifactId>
    6. <version>3.0-RC1</version>
    7. </dependency>

      该包的结构图如下:

           

  • 添加配置文件
  1. #mybatis-plus配置
  2. mybatis-plus:
  3. mapper-locations: classpath:/mapper/*Mapper.xml
  4. #实体扫描,多个package用逗号或者分号分隔
  5. typeAliasesPackage: com.wuhaijun.entity
  6. global-config:
  7. # 数据库相关配置
  8. db-config:
  9. #主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
  10. id-type: AUTO
  11. #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
  12. field-strategy: not_empty
  13. #驼峰下划线转换
  14. column-underline: true
  15. #数据库大写下划线转换
  16. #capital-mode: true
  17. #逻辑删除配置
  18. logic-delete-value: 0
  19. logic-not-delete-value: 1
  20. db-type: mysql
  21. #刷新mapper 调试神器
  22. refresh: true
  23. # 原生配置
  24. configuration:
  25. map-underscore-to-camel-case: true
  26. cache-enabled: false
  27. logging:
  28. level: warn
  • 开始使用mybatisPlus(下面说的是跟mybatis相比需要更改的地方)
  1. 在实体类上必须要指定主键字段,使用注解@TableId。如果没有使用该注解指定主键,在启动的时候会扫描不到mapper,启动失败。(这个问题查了好久,一开始没有使用该注解一直启动失败,最后看了源码发现在实体类上使用该注解,最后加上该注解,启动成功。不知道我的理解是否正确,或者跟配置文件里面的配置有什么关系,这个以后慢慢研究)如果创建的表跟实体名不一致,可以使用注解@TableName来明确指定表名
    1. @TableName("t_user")
    2. public class User {
    3. @TableId
    4. private Long id;
    5. private String name;
    6. private int age;
    7. private int sex;
    8. private String address;
    9. // 省略get/set方法
    10. }

     

  2. 对于mapper,要继承BaseMapper类,在该类中已经集成了最常用的CRUD方法而不再需要我们配置xml文件
  3. 添加java配置,mybatisPlus提供的分页需要手动配置 
  1. @Configuration
  2. @MapperScan("com.springboot.mybatisPlus.mapper*")
  3. public class MybatisPlusConfig {
  4. @Bean
  5. public PaginationInterceptor paginationInterceptor() {
  6. return new PaginationInterceptor();
  7. }
  8. }

这样就完成了mybatisPlus所有的准备工作了。下面就来介绍一下具体使用了,直接贴上代码:

  1. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  2. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.wuhaijun.entity.User;
  6. import com.wuhaijun.mapper.UserMapper;
  7. import com.wuhaijun.service.UserService;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.data.redis.core.RedisTemplate;
  12. import org.springframework.stereotype.Service;
  13. import javax.annotation.Resource;
  14. import java.util.List;
  15. @Service
  16. public class UserServiceImpl implements UserService {
  17. private Logger logger = LoggerFactory.getLogger(getClass());
  18. @Resource
  19. private RedisTemplate<String,User> redisTemplate;
  20. @Autowired
  21. private UserMapper mapper;
  22. @Override
  23. public void insert(User user) {
  24. Integer count = mapper.insert(user);
  25. if(count > 0){
  26. logger.info("插入成功");
  27. }else{
  28. logger.info("插入失败");
  29. }
  30. }
  31. @Override
  32. public void delete(User user) {
  33. mapper.deleteById(user.getId());
  34. }
  35. @Override
  36. public void update(User user) {
  37. //mapper.updateById(user);
  38. /**
  39. * update(@Param("et") T var1, @Param("ew") Wrapper<T> var2);
  40. * 第一个参数是要更新的对象,第二个参数是更新格式
  41. * 对于setSql()方法,这里指定的属性值会覆盖更新对象中对应的属性值,没有指定的属性值继续按照更新对象中的值更新数据库
  42. * 同时对于字符串类型必须要使用单引号,否则会报错;eg:setSql("name='谢逊'")
  43. */
  44. mapper.update(user,new UpdateWrapper<User>().setSql("name = '" + user.getName() + "'").eq("id",1L));
  45. }
  46. @Override
  47. public List<User> selectListBySQL(){
  48. /**
  49. * 这是自定义查询方法,这里跟原生的MyBatis写法一样,可以使用注解,也可以读取xml中的sql
  50. * 使用MyBatisPlus集成之后的方法,都不需要配置xml
  51. */
  52. List<User> users = mapper.selectListBySQL();
  53. return users;
  54. }
  55. @Override
  56. public List<User> selectListByConditon(User user) {
  57. /**
  58. * 这里使用QueryWrapper来添加查询的约束
  59. */
  60. QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("name",user.getName());
  61. List<User> users = mapper.selectList(wrapper);
  62. return users;
  63. }
  64. @Override
  65. public List<User> selectListByConditonForPage(User user,int currentPage,int pageSize) {
  66. /**
  67. * 添加约束条件,同时分页
  68. */
  69. IPage<User> page = new Page<User>(currentPage,pageSize);
  70. QueryWrapper<User> wrapper = new QueryWrapper<User>().like("name",user.getName());
  71. IPage<User> userIPage = mapper.selectPage(page, wrapper);
  72. return userIPage.getRecords();
  73. }
  74. @Override
  75. public User findUserById(int id) {
  76. /**
  77. * 原生Mybatis写法
  78. */
  79. return mapper.findUserById(id);
  80. }
  81. }

以上使用MP完常用的CRUD以及分页操作

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/508647
推荐阅读
相关标签