java 分页 通用Mapper,SpringBoot(四):mybatis之通用mapper、分页插件PageHelper

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

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

pom.xml:jar引入

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.1.1

tk.mybatis

mapper-spring-boot-starter

1.1.1

com.github.pagehelper

pagehelper-spring-boot-starter

1.1.1

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

*/

public interface Mapper extends

BaseMapper,

ConditionMapper,

IdsMapper,

InsertListMapper {

}

UserMapper:User对象Dao层

public interface UserMapper extends Mapper {

}

UserService:Service层代码

@Service

public class UserService {

private static final Logger LOG = LoggerFactory.getLogger(UserService.class);

@Resource

private 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 userList){

int count = userMapper.insertList(userList);

return true;

}

public List 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 {

@Autowired

private PropertiesValues propertiesValues;

@Resource

private 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 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、实例运行:分页查询

{

"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、资料 参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值