2019独角兽企业重金招聘Python工程师标准>>>

资料参考:MyBatis-Spring-Boot

1、集成Mybatis、通用Mapper和分页插件PageHelper

DevTools 热启动配置会造成mybatis报错,解决方案见MyBatis-Spring-Boot。示例取消了DevTools

  • pom.xml:jar引入
<!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><!--mybatis之mapper插件--><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>1.1.1</version></dependency><!--mybatis之pagehelper插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.1.1</version></dependency>
  • application.properties:框架、插件配置
#mybatis
#数据库实体对象位置
mybatis.type-aliases-package=com.ss.quickStart.domain
#mybatis中xml配置文件
mybatis.mapper-locations=classpath:mapper/*.xml#mapper:https://github.com/abel533/Mapper
#mappers:指定基础Mapper继承接口,多个时逗号隔开
mapper.mappers=com.ss.quickStart.core.Mapper
#insert、update是否判断字符串类型!='' 即 test="str != null"表达式内是否追加 and str != ''
mapper.not-empty=false
#主键生成策略:http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/3.Use.md 第3点
mapper.identity=MYSQL#pagehelper:https://github.com/pagehelper/Mybatis-PageHelper
#指定数据库分页类型
pagehelper.helperDialect=mysql
#页码<=0 查询第一页,页码>=总页数查询最后一页
pagehelper.reasonable=true
#支持通过 Mapper 接口参数来传递分页参数:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
  • User.java:表实体对象,主键id设置为自增
/*** Created by wsy on 2017/8/8.* 实体类注解:http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/3.Use.md:第2点*/
@Table(name = "user")
public class User {@Id//@GeneratedValue(strategy = GenerationType.IDENTITY)//主键策略:http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/3.Use.md:第3点@GeneratedValue(generator = "JDBC")private Long id;@Column(name = "name")private String name;private Integer sex;}
  • Mapper.java:自定义的通用Mapper
/*** 自定义Mapper* 关于Mapper详解:http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/5.Mappers.md* @param <T>*/
public interface Mapper<T> extendsBaseMapper<T>,ConditionMapper<T>,IdsMapper<T>,InsertListMapper<T> {
}
  • UserMapper:User对象Dao层
public interface UserMapper extends Mapper<User> {}
  • UserService:Service层代码
@Service
public class UserService {private static final Logger  LOG = LoggerFactory.getLogger(UserService.class);@Resourceprivate UserMapper userMapper;public User getById(long id){return userMapper.selectByPrimaryKey(id);}public Boolean add(User user){int count = userMapper.insert(user);LOG.info("新增用户id=>{}",user.getId());return count==1?true:false;}public Boolean batchAdd(List<User> userList){int count = userMapper.insertList(userList);return true;}public List<User> findAll(){//return userMapper.selectAll();Condition condition = new Condition(User.class);condition.setOrderByClause("id DESC");return userMapper.selectByCondition(condition);}
}
  • UserController.java:controller层代码
@RestController
public class UserController {@Autowiredprivate PropertiesValues propertiesValues;@Resourceprivate UserService userService;//取配置文件中author.name值,若没有则赋值为ss@Value("${author.name:ss}")private String name;@RequestMapping("getUser.do")public User getUser(){User user = new User();user.setName(propertiesValues.getUserName());user.setSex(1);System.out.println(MessageFormat.format("name=>{0}",name));return user;}@RequestMapping("user/getById.do")public User getById(Long id){return userService.getById(id);}@RequestMapping("user/add.do")public Boolean add(User user){return userService.add(user);}/*** 通过JSON方式解析入参:请求头中content-type:application/json;Request Body:{"name": "AA","sex": 1}* localhost:8080/user/addByJSON.do?{"name": "AA","sex": 1}* @param user* @return*/@RequestMapping("user/addByJSON.do")public Boolean addByJSON(@RequestBody User user){return userService.add(user);}/*** 批量添加用户:* localhost:8080/user/batchAdd.do?userList[0].name=A&userList[0].sex=1&userList[1].name=B&userList[1].sex=0* @param userListDTO* @return*/@RequestMapping("user/batchAdd.do")public Boolean batchAdd(UserListDTO userListDTO){return userService.batchAdd(userListDTO.getUserList());}@RequestMapping("/list")public PageInfo list(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "0") Integer size) {PageHelper.startPage(page, size);List<User> list = userService.findAll();PageInfo pageInfo = new PageInfo(list);return pageInfo;}
}
  • QuickStartApplication.java:启动类,增加@MapperScan,扫描对应Dao接口
@ServletComponentScan
@SpringBootApplication
@MapperScan(basePackages = "com.ss.quickStart.dao")
public class QuickStartApplication {public static void main(String[] args) {SpringApplication.run(QuickStartApplication.class, args);}
}
  • user.sql:user表创建sql
CREATE TABLE `user` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(30) DEFAULT NULL,`sex` int(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

2、实例运行:分页查询

http://localhost:8080/list?page=5&size=5

{"pageNum": 5,"pageSize": 5,"size": 2,"startRow": 21,"endRow": 22,"total": 22,"pages": 5,"list": [{"id": 2,"name": "s","sex": 1},{"id": 1,"name": "w","sex": 1}],"prePage": 4,"nextPage": 0,"isFirstPage": false,"isLastPage": true,"hasPreviousPage": true,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [1,2,3,4,5],"navigateFirstPage": 1,"navigateLastPage": 5,"firstPage": 1,"lastPage": 5
}

3、资料 参考

https://segmentfault.com/a/1190000008347611

https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

转载于:https://my.oschina.net/u/2526015/blog/1511381

SpringBoot(四):mybatis之通用mapper、分页插件PageHelper相关推荐

  1. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...

  2. SSM综合项目实战(TTSC) -- day02 Dubbo注册中心,通用Mapper,分页插件

    一.Dubbo的连接方式 1.连接方式介绍 使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Redis等等.由于Dubbo将这些协议的实 ...

  3. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

  4. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  5. Java使用lambda进行分页,SpringBoot(八):整合mybatis,通用mapper,分页插件,lambda,Logger,junit用法...

    本文作者:低调小熊猫 转载声明:自由转载-非商用-非衍生-保持署名,非商业转载请注明作者及出处,商业转载请联系作者本人qq:2696284032 整合demo 配置依赖 tk.mybatis mapp ...

  6. SpringBoot集成MyBatis的分页插件PageHelper

    [写在前面] 项目的后台管理系统需要展示所有资源信息,select * 虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差.分页自然是必要选择,但原生的方法过于繁杂.MyBatis的分 ...

  7. SpringBoot集成MyBatis的分页插件PageHelper(回头草)

    俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心 ...

  8. MyBatis分页插件PageHelper使用练习

    转载自:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown 1.环境准备: 分页插件p ...

  9. MyBatis学习总结(17)——Mybatis分页插件PageHelper

    2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊 ...

  10. springboot进阶,分页插件 pageHelper,Swagger整合,日志

    文章目录 1,课程回顾 2,本章重点 3,具体内容 3.1 整合连接池 3.2 springboot日志配置: 3.3 springboot整合shiro 3.4 mybatis分页插件 pageHe ...

最新文章

  1. c语言规定预处理命令必须以什么开头,C语言规定预处理命令必须以___________开头...
  2. 了不起的Virtual DOM(一):起源
  3. 给程序员的VIM速查卡
  4. MATLAB实现最优低通滤波器的函数
  5. boost::adaptors相关的测试程序
  6. LOL手游最能混分的英雄,前期刷野靠队友,迪丽阿巴亲自教学
  7. java 数据包含_如何高效判断java数组是否包含某个值
  8. leetcode 无重复字符的最长子串
  9. JAVA基础之关键字、保留字和标识符
  10. vue打印指定的html,使用window.print()打印指定的一个vue 组件
  11. 百度AI攻略:货币识别
  12. 计算机组成原理bzc指令,计算机组成原理课程设计-09级.ppt
  13. 互联网从此没有 BAT
  14. 公网ip经常变动的解决方法
  15. Linux是怎么来的?终于有一篇文章讲清楚了
  16. BubbleGum96 开箱杂谈与软件资源
  17. 王者荣耀交流协会第6次Scrum立会
  18. Spring Cloud Alibaba——Nacos服务配置中心
  19. 算法小讲堂之哈希表|散列表|考研笔记
  20. /lib和/usr/lib的区别、/lib64与/usr/lib64的区别

热门文章

  1. 8.29 脏检查笔记
  2. POJ 3581 Sequence(后缀数组)题解
  3. 线程、协程、Goroutine的区别和联系
  4. Codeforces Round #465 935C. Fifa and Fafa计算几何
  5. 与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
  6. 三角形 JAVA 代码
  7. 调整home和根分区大小
  8. SQL注入原理解说,非常不错!
  9. MongoDB 自动分片 auto sharding
  10. 方法二 、属性 CLR学习第九课