栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java第三阶段第十三天--CureGuy

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java第三阶段第十三天--CureGuy

 1、myatis-plus的新用法

新建一个项目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);
    }
}

MP的动态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执行入库操作.

2、 商品列表的crud 2.1、 编辑service 
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、 图文解释

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号