MyBatisPlus小练习

MyBatisPlus是基于MyBatis的高效工具库,提供简化CRUD操作、条件构造器、分页查询等功能,通过代码生成减少重复工作,支持Lambda表达式,适用于Java开发者提升开发效率。

MyBatisPlus

MyBatis Plus 是一个基于 MyBatis 的增强工具库,它简化了 MyBatis 框架的使用,提供了很多便捷的功能和增强的特性,能够大幅度提高开发效率。MyBatis Plus 主要面向的是 Java 开发者,用于简化对关系型数据库的操作。
MyBatis Plus 的主要特性包括:

1.简化的 CRUD 操作:MyBatis Plus 提供了一系列简化的 API,可以通过简单的方法调用实现常见的增删改查操作,避免了繁琐的 SQL 编写。
2.条件构造器:通过条件构造器,可以以一种面向对象的方式构建查询条件,避免手写繁杂的 SQL 语句,并支持灵活的条件组合。
3.分页查询:MyBatis Plus 提供了方便的分页查询支持,可以轻松地进行分页查询操作。
4.自动生成代码:MyBatis Plus 提供了代码生成器,可以根据数据库表结构自动生成实体类、Mapper 接口以及 XML 映射文件,减少了手动编写重复代码的工作量。
5.通用的 CRUD 接口:MyBatis Plus 提供了通用的 CRUD 接口,无需编写常规的增删改查方法,可以直接使用已封装好的方法进行数据库操作。
6.Lambda 表达式支持:MyBatis Plus 支持使用 Lambda 表达式进行查询条件的构建,使得代码更加简洁和易于理解。

除了以上主要特性之外,MyBatis Plus 还提供了缓存支持、多数据源支持、乐观锁、逻辑删除等功能,以及一些其他的实用工具类和插件,可以进一步提升开发效率。
总之,MyBatis Plus 是一个功能强大且易于使用的 MyBatis 增强工具库,它简化了数据库操作,提供了丰富的功能和便捷的 API,并提高了开发效率。

MyBatisPlus的十个练习题

1.查询id信息为1,3,4,5,6用户数据
sql: select * from user where id in (1,2,3,4,5,6);
 思考:id可以利用数组进行接收 利用数组查询数据

 @Test
    void testSelectById() {

        Collection<Serializable> idList = new ArrayList<>();
        idList.add(1);
        idList.add(3);
        idList.add(4);
        idList.add(5);
        idList.add(6);
        List<User> userList = userDao.selectBatchIds(idList);
        for (User user : userList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

2: 根据name="黑熊精"  age="3000"查询数据信息
SelectByMap:根据具体的字段查询用户信息.
sql语句: select * from user where name="黑熊精" and age=3000
规则:默认使用and连接符.

@Test
    void testSelectByMap(){
        Map<String, Object> columnMap = new HashMap<>();
        columnMap.put("name", "黑熊精");
        columnMap.put("age", 3000);
        List<User> resultList = userDao.selectByMap(columnMap);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }

    }

3.name属性中包含"精"的数据,并且为女性
sql: SELECT * FROM USER WHERE NAME LIKE "%精%" AND sex = "女"
 queryWrapper: 条件构造器
作用 动态拼接sql的where条件
逻辑运算符:  >gt , <lt, =eq, >=ge, <= le

@Test
    void testQueryWrapper(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name", "精"); // 匹配名字中包含“精”的部分
        queryWrapper.eq("sex", "女"); // 性别等于女性
        List<User> resultList = userDao.selectList(queryWrapper);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

4.查询年龄在18-35之间的女性用户.
     * sql: SELECT * FROM USER WHERE age BETWEEN 18 AND 35 AND sex ="女";

@Test
    void testQueryWrapper1(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.between("age", 18, 35);// 年龄在18-35之间
        queryWrapper.eq("sex", "女"); // 性别为女性
        List<User> resultList = userDao.selectList(queryWrapper);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

5.条件:  查询年龄大于100岁的,并且按照年龄降序排列,
     *      如果年龄相同按照Id降序排列. 
     * sql:SELECT * FROM USER WHERE age > 100 ORDER BY age DESC,id DESC;
 

  @Test
    void testQueryWrapper2(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age", 100); // 年龄大于100岁
        queryWrapper.orderByDesc("age"); // 按照年龄降序排列
        queryWrapper.orderByDesc("id"); // 如果年龄相同,按照ID降序排列
        List<User> resultList = userDao.selectList(queryWrapper);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

6.* 条件: 查询名称以"乔"结尾的,并且性别为女,并且age小于30岁.按照年龄降序排列.
     * SQL:
     *      SELECT * FROM USER WHERE (NAME LIKE "%乔" AND sex="女"AND age < 30) ORDER BY age DESC;

 @Test
    void testQueryWrapper3(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.likeRight("name", "乔"); // 名称以"乔"结尾
        queryWrapper.eq("sex", "女"); // 性别为女性
        queryWrapper.lt("age", 30); // 年龄小于30岁
        queryWrapper.orderByDesc("age"); // 按照年龄降序排列
        List<User> resultList = userDao.selectList(queryWrapper);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

7.  * 查询age < 100岁的用户,并且性别与name="孙尚香"的性别相同的的用户数据.
     * 分析: age<100  sex=男/女
     * sql:SELECT * FROM USER WHERE age < 100 AND sex in(ELECT sex FROM USER WHERE NAME = "孙尚香")
 

 @Test
    void testQueryWrapper4(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.lt("age", 100); // 年龄小于100岁
        queryWrapper.inSql("sex", "SELECT sex FROM USER WHERE name = '孙尚香'"); // 性别与名字为"孙尚香"的用户相同
        List<User> resultList = userDao.selectList(queryWrapper);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

8.需求: 有时可能不需要查询全部的数据库的表字段
* 查询age为18岁的用户的名称和id.
* select:挑选字段的属性.
* 查询结果:User(id=12, name=貂蝉, age=null, sex=null)
 

 @Test
    void testQueryWrapper5(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("age",18);
        queryWrapper.select("id","name","age","sex");
        List<User> resultList = userDao.selectList(queryWrapper);
        for (User user : resultList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }

    }

9. * 条件判断
     * 以name和sex不为null的数据当做where条件.
     * condition作用:
         * 判断参数是否拼接为where条件
         * 结果true,动态拼接参数
         * 结果false,参数不会动态拼接
     * 应用场景:
         * 接收前台的参数时,参数可能为null或者其他的数值类型时
         * 需要添加判断.
     * 业务需求:
         * 如果age>18时,才能查询年龄
 

 @Test
    void testQueryWrapper6() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.isNull(false, "name"); // name 不为 null
        queryWrapper.isNull(false, "sex"); // sex 不为 null
        queryWrapper.apply("age > {0}", 18); // age 大于 18
        List<User> userList = userDao.selectList(queryWrapper);
        for (User user : userList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }

    }

10. * 根据对象查询数据库
 * 条件:根据对象中不为null的属性充当where条件
* 需求:查询age=18的用户信息 性别=女
* 说明:利用对象的方式查询时,逻辑运算符都是"="号

@Test
    void testQueryWrapper7() {
        User user = new User();
        user.setAge(18);
        user.setSex("女");

        QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
        List<User> userList = userDao.selectList(queryWrapper);
        for (User user1 : userList) {
            System.out.println(user.toString()); // 打印每个用户对象的信息
        }
    }

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值