MyBatisPlus(1)

MyBatisPlus简历:

官网:https://mp.baomidou.com/

1、MyBatisPlus入门案例:

(1)创建新模块

 (2)勾选Mysql技术集

 (3)手动添加MyBatisPlus起步依赖

 (4)在yml配置文件中设置Jdbc参数

 (5)创建实体类和表结构:

 (6)定义接口,继承BaseMapper<User>

 (7)测试功能:

 2、标准URUD制作:

 (1)增:

  @Test
    void testSave(){
        User user = new User();
        user.setUname("黄宝");
        user.setPassword("552166");
        user.setUid("a001");
        user.setGender("男");
        user.setFlag("广东");
        userDao.insert(user);
    }

 (2)删:(通过表的主键进行删除)

 @Test
    void testDelete(){

        userDao.deleteById("a001");

    }

注意:要先在实体类中对应数据库表主键的属性加上@TableId("名称");表示该属性为表主键。

(3)改:(通过表主键以及所提供的其他属性值进行修改)

如下图:是通过主键修改Uname名称,其他属性值不变,以实体类Pojo作为参数,只修改实体类所赋的值,其他属性没提供值的话保持不变。

    @Test
    void testUpdate(){
//        1
        User user = new User();
        user.setUid("a001");
        user.setUname("哈罗");
        userDao.updateById(user);
     }

 (4)查:(通过主键查询相应的记录)

    @Test
    void TestGet(){
        User user = userDao.selectById("a001");
        System.out.println(user);
    }

3、Lombok (实体类简化开发)

(1)Maven导入坐标:

<!--        实体类简化-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

(2)在实体类加上注解@Date(包含所有其他的注解,除了构造方法外),即可省略手动去创Get函数,Set函数,ToString函数等,也可以一个一个添加注解@Setter、@Getter、@ToString等

 4、标准分页功能制作:

(1)设置分页拦截器

创建一个config包并创建MpConfig类:

@Configuration
public class MpConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
//        1.定义Mp拦截器
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//        2.添加具体的拦截器 分页
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

 (2)执行分页查询

IPage page = new Page(2,3);
                  //页数  //每页多少条记录
        userDao.selectPage(page,null);
        System.out.println("当前页码值:"+page.getCurrent());
        System.out.println("每页显示数:"+page.getSize());
        System.out.println("一共多少页:"+page.getPages());
        System.out.println("一共多少条:"+page.getTotal());
        System.out.println("数据:"+page.getRecords());

小知识点:

(1)开启MybatisPlus日志:

(2)控制器编译后输出台SpringBoot的LOGO取消:(为了让输出控制台更清晰明了)

#Spring logo取消:
mybatis-plus:
  global-config:
    banner: false

#Spring logo取消
spring:
  main:
    banner-mode: off 

(3)取消日志显示:(为了让输出控制台更清晰明了)

创建logback.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
<!--取消日志-->

5、条件查询的三种格式:

(1)按条件查询:

    @Test
    void Test() {
//        方式一:按条件查询
        QueryWrapper qw = new QueryWrapper();
//        查询条件18岁以下
        qw.lt("age",18);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);
    }

(2)lambda条件查询

//        方式二:lambda按条件查询
        QueryWrapper<User> qw = new QueryWrapper<User>();
//        查询条件18岁以下
        qw.lambda().lt(User::getUid,18);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

(3)lambda条件查询(简化)

//        方式三:lambda按条件查询 (推荐)
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//        查询条件18岁以下
        lqw.lt(User::getUid,18);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

 (4)多条件的情况下:(且   或)

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// 情况一:       小于30,大于10 (且)and
//        (1)格式一
        lqw.lt(User::getUid,30);
        lqw.gt(User::getUid,10);
//        (2)格式二
        lqw.lt(User::getUid,30).gt(User::getUid,10);

// 情况二:       小于10或大于30 (或)or
        lqw.lt(User::getUid,10).or().gt(User::getUid,30);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

6、条件查询null判定:

  7、查询投影:(查询时只显示某一字段)

(1)查询数据库某表的某些字段:

//        字段
          QueryWrapper<User> lqw = new QueryWrapper<User>();
//        只查询 id 姓名 密码
          lqw.select("uid","uname","password");
          List<User> userList = userDao.selectList(lqw);
          System.out.println(userList);


//        Pojo
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//       只查询 id 姓名
        lqw.select(User::getUid,User::getUname);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

(2)分组并查询行数:

//     查询行数
        QueryWrapper<User> lqw = new QueryWrapper<User>();
        lqw.select("count(*) as count,gender");
//        分组查询 以性别(男 女)
        lqw.groupBy("gender");
        List<Map<String,Object>> userList = userDao.selectMaps(lqw);
        System.out.println(userList);

8、查询条件设置:

(1)条件:'=' eq         '<'  gt        '>'   ge       '>='   le        '<='  lt        '在什么范围内'  between   

//        通过id和姓名查询对象  = 等于
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.eq(User::getUid,"a001").eq(User::getUname,"黄宝");
        User userList = userDao.selectOne(lqw);
        System.out.println(userList);


  //      范围查询 lt 小于 le 大于(包括等号)   gt ge   eq 等于  between在什么范围内
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.between(User::getPassword,10,20);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

 (2)模糊查询:

//        模糊匹配 like  查询该字段含有‘0’的记录
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.like(User::getUid,"0");
//        like %0
        lqw.likeLeft(User::getUid,"0");
//        like 0%
        lqw.likeRight(User::getUid,"0");
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

官网(查询条件设置查看):

 9、DQL编程控制-映射匹配兼容性:

(1)表字段名与编码属性设计不同步:

解决方案:用@TableField(value="pwd")

 (2)实体类中含有属性且该属性数据库表内没定义:

 解决方案:用@TableField(exist = false)

 (3)查询权限:

若密码不允许被查询,可这样设置:select = false

 (4)表名与编码开发设计不同步:

 解决方案:用@TableName("数据库表名")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值