1、创建数据库表
DROP TABLE IF EXISTS test_user;
CREATE TABLE test_user
(
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
INSERT INTO test_user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
2、引入mybatis-plus依赖包
<dependencies>
<!--druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis-plus 依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!-- mybatis plus 代码生成器依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<!-- 代码生成器模板 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
<!-- 工具包 -->
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3、创建一个实体类
package com.example.mybatisplus.bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.*;
import lombok.experimental.Accessors;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true) //lombok的实验类特性
@Builder
@TableName("test_user") //指定对应的数据库表
public class User {
@TableId(value = "id", type = IdType.AUTO) //id自增
private Integer id;
@TableField(value = "name") //指定对应的数据库表字段
private String name;
private Integer age;
private String email;
@TableField(exist = false) //不映射数据库表中的任何字段
private String like;
}
4、创建一个继承BaseMapper的mapper
- BaseMapper提供了各种CRUD方法,传入一个泛型
package com.example.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplus.bean.User;
//使用mybatis-plus增强接口
public interface UserMapper extends BaseMapper<User> {
}
5、在Application入口引入mapper
package com.example.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(value = "com.example.mybatisplus.mapper")
@SpringBootApplication
public class MybatisplusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisplusApplication.class, args);
}
}
6、controller控制器
package com.example.mybatisplus.controller;
import com.example.mybatisplus.bean.User;
import com.example.mybatisplus.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
@Autowired
UserService userService;
//增加
@PostMapping("/insertUser")
public Integer insertUser(@RequestBody User user){
return userService.insertUser(user);
}
//删除
@GetMapping("/delUser/{id}")
public Integer delUser(@PathVariable("id") Integer id){
return userService.delUser(id);
}
//修改一条
@PostMapping("/updateUserById")
public Integer updateUser(@RequestBody User user){
return userService.updateUser(user);
}
//批量修改
@PostMapping("/updateUserAll")
public Integer updateUser2(@RequestBody User user){
return userService.updateUser2(user);
}
//查询所有
@GetMapping("/getUsers")
public void findAllUser(){
List<User> users = userService.getUsers();
users.forEach(user -> System.out.println(user));
}
//查询一条
@GetMapping("/getUser/{id}")
public User getUser(@PathVariable("id") Integer id){
return userService.getUser(id);
}
//分页查询
@GetMapping("selectUserPage")
public UserVo selectUserPage(UserVo userVo){
return userService.selectUserPage(userVo.getCurrent(), userVo.getSize());
}
}
7、service层
package com.example.mybatisplus.service;
import com.example.mybatisplus.bean.User;
import java.util.List;
public interface UserService {
public Integer insertUser(User user);
public Integer delUser(Integer id);
public Integer updateUser(User user);
public Integer updateUser2(User user);
public User getUser(Integer id);
public List<User> getUsers();
public UserVo selectUserPage(Integer current, Integer size);
}
8、service/impl层
package com.example.mybatisplus.service.impl;
import com.example.mybatisplus.bean.User;
import com.example.mybatisplus.mapper.UserMapper;
import com.example.mybatisplus.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
protected UserMapper userMapper;
@Override
public Integer updateUser(User user) {
return userMapper.updateById(user);
}
@Override
public Integer updateUser2(User user) {
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.eq("age",20);
return userMapper.update(user,queryWrapper);
}
@Override
public Integer insertUser(User user) {
return userMapper.insert(user);
}
@Override
public User getUser(Integer id) {
return userMapper.selectById(id);
}
@Override
public Integer delUser(Integer id) {
return userMapper.deleteById(id);
}
@Override
public List<User> getUsers() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// queryWrapper.eq("age",20); //设置等值查询
// queryWrapper.lt("age",20); //设置小于查询
// queryWrapper.le("age",20); //设置小于等于查询
// queryWrapper.gt("age",20); //设置大于查询
// queryWrapper.ge("age",20); //设置大于等于查询
// queryWrapper.like("name","J"); //模糊查询 like %?%
// queryWrapper.likeLeft("name","e"); //模糊查询 like %?
queryWrapper.likeRight("name","e"); //模糊查询 like ?%
List<User> users = userMapper.selectList(queryWrapper);
return users;
}
@Override
public UserVo selectUserPage(Integer current, Integer size) {
UserVo userVo = new UserVo();
IPage<User> page = new Page<>(current, size);
userMapper.selectPage(page, null);
userVo.setCurrent(current);
userVo.setSize(size);
userVo.setTotal(page.getTotal());
userVo.setUserList(page.getRecords());
return userVo;
}
}
9、使用分页查询
- 新建MyBatisPlusConfig文件注册分页插件
package com.example.mybatisplus.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@Configuration
@MapperScan("com.example.mybatisplus.mapper")
public class MyBatisPlusConfig {
private final static Logger logger = LoggerFactory.getLogger(MyBatisPlusConfig.class);
/**
* @description: 配置分页插件
* @author: gradual
* @date: 2019/1/15 10:17
* @param: []
* @return: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
logger.debug("注册分页插件");
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;
}
}
package com.example.mybatisplus.vo;
import com.example.mybatisplus.bean.User;
import lombok.Data;
import java.util.List;
@Data
public class UserVo {
private Integer current;
private Integer size;
private Long total;
private List<User> userList;
}
- 分页测试
![](https://img2020.cnblogs.com/blog/1973680/202006/1973680-20200605175154519-822222763.png)