新建一个项目MP用来测试mybatis-plus
把pom.xml里原来的mybatis依赖换成plus版的
com.baomidou
mybatis-plus-boot-starter
3.4.3
编辑yml文件
#语法: 1.key:(空格)value结构
# 2.注意层级缩进
server:
port: 8090
#整合1.数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jt?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#关于密码0 开头的说明
#password: "0123456"
#SpringBoot整合mybatisPlus
mybatis-plus:
#指定别名包
type-aliases-package: com.jt.pojo
#加载指定的xml映射文件
mapper-locations: classpath:/mybatis/mappers
@Test
public void insertUser() {
User user = new User();
user.setId(null).setName("MybatisPlus")
.setAge(10).setSex("男");
userMapper.insert(user);
}
@Test
public void selectById() {
int id = 1;
User user = userMapper.selectById(id);
System.out.println(user);
}
@Test
public void selectByNS() {
User user = new User();
user.setName("大乔").setSex("女");
QueryWrapper queryWrapper = new QueryWrapper<>(user);
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
@Test
public void selectByNS2() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","大乔")
.eq("sex","女");
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
@Test
public void selectByAS() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age",18)
.eq("sex","男");
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
@Test
public void selectLike() {
QueryWrapper queryWrapper = new QueryWrapper<>();
//queryWrapper.like("name","君") //"%君%"
queryWrapper.likeLeft("name","君") //"%君"
.eq("sex","女");
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
@Test
public void selectIds() {
Integer[] ids = {1,3,4,5};
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",ids)
.orderByDesc("age");
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
@Test
public void selectObjs() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sex","女");
List list = userMapper.selectObjs(queryWrapper);
System.out.println(list);
}
@Test
public void selectList2() {
Integer age = null;
String sex = "女";
//判断字符串是否为null
//boolean flag = sex !=null && "".equals(sex);
boolean flag = StringUtils.hasLength(sex);
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.gt(age!=null, "age",age )
.eq(flag,"sex",sex);
List list = userMapper.selectList(queryWrapper);
System.out.println(list);
}
}
2、 商品列表的crud 2.1、 编辑serviceMP的动态SQL查询
1. 用户调用接口方法 userMapper.insert(User)方法.
2. 根据UserMapper的接口找到父级接口baseMapper.
3. 根据父级接口动态获取当前接口的泛型对象T.
4. 根据泛型T 获取指定的注解@TableName("demo_user"),之后获取表名demo_user.
5. 根据泛型对象T,获取其中的属性,之后再找到属性的注解@TableField("id"),之后再次获取注解的值, 即字段名称.
6. 根据字段名称,获取对应属性的值.
7. 根据Sql拼接 形成最终的可以执行的Sql.
8. MP将生成的Sql交给Mybatis执行入库操作.
package com.jt.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jt.mapper.ItemMapper;
import com.jt.pojo.Item;
import com.jt.pojo.User;
import com.jt.vo.PageResult;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
@Service
@Data
public class ItemServiceImpl implements ItemService {
@Autowired
private ItemMapper itemMapper;
@Override
public PageResult getItemList(PageResult pageResult) {
QueryWrapper- queryWrapper = new QueryWrapper<>();
//判断条件: 用户传递query 则添加where条件
//不用if用Boolean,因为queryWrapper.like(boolean condition, R column, Object val)中的第一个参数是Boolean类型
String query = pageResult.getQuery();
boolean flag = StringUtils.hasLength(query);
queryWrapper.like(flag,"title",query);
//page接口原来只有2个,经过分页查询之后,有四个结果
//页数 条数 总数 记录
IPage
- page = new Page<>(pageResult.getPageNum(),pageResult.getPageSize());
page = itemMapper.selectPage(page,queryWrapper);//分页参数,条件
//获取总数
long total = page.getTotal();
//获取记录数
List
- rows = page.getRecords();
//返回分页对象
return pageResult.setTotal(total).setRows(rows);
// //1.获取总记录数 Integer--long 自动转化
// long total = itemMapper.findTotal();
// //2.获取分页结果
// int size = pageResult.getPageSize();//条数
// int start = (pageResult.getPageNum() - 1) * size;//起始位置
// String query=pageResult.getQuery();//查询条件
// List
itemList =
// itemMapper.getItemListByPage(start,size,query);
// return pageResult.setTotal(total).setRows(itemList);//返回分页对象
}
@Override
public void updateItemStatus(Item item) {
itemMapper.updateById(item);
}
@Override
public void deleteItem(Integer id) {
itemMapper.deleteById(id);
}
@Override
public void updateItem(Item item) {
itemMapper.updateById(item);
}
// @Override
// public void addItem(Item item) {
// item.setStatus(true);
// itemMapper.insert(item);
// }
//
}
2.2、 编辑controller类
@RestController
@CrossOrigin
@RequestMapping("/item")
public class ItemController {
@Autowired
private ItemService itemService;
//请求路径: /item/getItemList?query=&pageNum=1&pageSize=10
//请求类型: get
//请求参数: 使用pageResult对象接收
@GetMapping("/getItemList")
public SysResult getItemList(PageResult pageResult){
pageResult=itemService.getItemList(pageResult);
return SysResult.success(pageResult);
}
//请求路径: /item/updateItemStatus
//请求类型: put
@PutMapping("/updateItemStatus")
public SysResult updateItemStatus(@RequestBody Item item){
itemService.updateItemStatus(item);
return SysResult.success();
}
//请求路径: /item/deleteItemById
//请求类型: delete
@DeleteMapping("/deleteItemById")
public SysResult deleteItemById(@PathVariable Integer id){
itemService.deleteItemById(id);
return SysResult.success();
}
2.3、 页面展示
2.4 、分页的处理
2.4.1、 设置一个配置类
package com.jt.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration//这是一个配置类 相当于早期的xml文件作用
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor =new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(
new PaginationInnerInterceptor(DbType.MARIADB));
return interceptor;
}
}
2.4.2、 图文解释



