mybatis-plus03--Lesson3

mybatis-plus插件

条件选择器

MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。

QueryWrapper:专门用于构造查询条件,支持基本的等于、不等于、大于、小于等各种常见操作。它允许你以链式调用的方式添加多个查询条件,并且可以组合使用 and 和 or 逻辑

使用最多的也就是QueryWrapper

等值判断条件:eq

//普通等值条件判断
    @Test
    void testEQ(){
        //条件选择器
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("age","100"); // where age = 100
        List<User> users = userDao.selectList(wrapper);
        users.forEach(System.out::println);
    }

 

大于或小于区间判断:gt ,lt

 //大于,小于区间判断
    @Test
    void testGTLT(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.gt("age",100);// where age > 100
        List<User> users = userDao.selectList(wrapper);
        users.forEach(System.out::println);
        QueryWrapper<User> wrapper1 = new QueryWrapper<>();
        wrapper1.lt("age",100); // where age <100
        users = userDao.selectList(wrapper1);
        users.forEach(System.out::println);
    }

 

区间判断:between .. and ....  ;注意这里的between ... and ....是开区间(100,200)

//区间判断,between and
    @Test
    void testBA(){
        QueryWrapper<User> age = new QueryWrapper<User>().between("age", 100, 120);
        List<User> users = userDao.selectList(age);
        users.forEach(System.out::println);
    }

 

空值判断:

//空值判断,查看是否为空
    @Test
    void testNull(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.isNull("age"); //where age is null
        wrapper.isNotNull("name"); //where name is not null
        List<User> users = userDao.selectList(wrapper);
    }

 

模糊查询:like

//模糊查询
    @Test
    void testLike(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.likeLeft("num","m"); // like %m
        wrapper.likeRight("name","m"); //like m%
        wrapper.like("name","m");//like %m%
    }

 

子查询:

//子查询
    @Test
    void testIn(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //where age in (select age from user where age >100)
        wrapper.inSql("age","select age from user where age > 100");
        List<User> users = userDao.selectList(wrapper);
        users.forEach(System.out::println);
    }

 

排序:

//排序
    @Test
    void testOrder(){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.orderByAsc("id"); // where ORDER BY id ASC
        List<User> users = userDao.selectList(wrapper);
        users.forEach(System.out::println);
    }

 

代码生成器

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

它可以自动生成和数据库表交互的代码,比如生成实体类(controller,pojo,service,dao),以及为每个实现类实现BaseMapper等有关数据库操作的功能,极大的提升了开发效率

public static void main(String[] args) {
        //项目操作数据库的名字
        String url = "jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=UTF-8";
        //登录账户
        String username = "root";
        //登录密码
        String password = "123456";
        //项目作者,一般没什么用就是注解在类中,相当于一个标记
        String author = "maming";
        //写入 dao,controller,service,entity的位置Java源码级目录
        String outputDir = "D:\\java\\JavaCode\\SpringBoot\\testMybati\\testMybatisPlus\\src\\main\\java";
        //项目模块目录
        String parentPackage = "org.cqust";
        //手写mapper.xml输出的位置,虽然mybatis-plus集成了大部分,但是多表查询没有集成,有需要可以自己写
        String mapperPackage = "D:\\java\\JavaCode\\SpringBoot\\testMybati\\testMybatisPlus\\src\\main\\resources\\";
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author(author) // 设置作者
                            .outputDir(outputDir); // 设置输出目录
                })
                .packageConfig(builder -> {
                    builder.parent(parentPackage) // 设置父包名
                            .moduleName("system") // 设置模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, mapperPackage)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("user") // 设置需要生成的表名
                            .entityBuilder()
                            .enableLombok() // 开启lombok模型
                            .controllerBuilder()
                            .enableRestStyle(); // 开启生成@RestController 控制器
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }

 

以上就是自动生成数据库操作代码的模块代码,按需求更改就好了,不同的数据库表只需要更改addInclude("user")位置,需要操作什么表就写入什么表

 

posted @ 2025-03-08 23:38  回忆也交给时间  阅读(56)  评论(0)    收藏  举报