• springboot整合mybatisplus


    springboot整合mybatisplus

    昨天有码友给我留言说为什么不用springboot整合mybatisplus进行使用,鉴于我也是一枚小白,今天就试试springboot整合,了解的也不是太多,简单记录一下,希望大家多多指点,不要介意。

    一、springboot简单整合mybatisplus(

    大家不了解spring整合mybatisplus的可以先去看一下我的上一篇文章,这里不再说了。)

    这里就简单说一下吧,springboot整合mybatisplus相比较于spring整合,最直接明了的就是少了那些各种各样的配置文件。

    在springboot里面使用时,去掉了配置文件,只是在一个yml文件里面,进行配置

    spring里面的数据库配置信息,数据源配置,声明全局配置,这里都集合在一个配置文件里面了

    #数据源
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC
        username: root
        password: root
        type: org.springframework.jdbc.datasource.DriverManagerDataSource
    #配置mybatisplus
    mybatis-plus:
      mapper-locations:
      - classpath:mapper/*Mapper.xml
      global-config:
        db-config:
          id-type: auto
        banner: true
    
    

    至于增删查改的方法与spring的如出一辙,这里就不再说了,这里说一个分页查询。

    • spring的分页查询
    <!-- spring xml 方式 -->
    <property name="plugins">
        <array>
            <bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
                <property name="sqlParser" ref="自定义解析类、可以没有"/>
                <property name="dialectClazz" value="自定义方言类、可以没有"/>
                <!-- COUNT SQL 解析.可以没有 -->
                <property name="countSqlParser" ref="countSqlParser"/>
            </bean>
        </array>
    </property>
    
    <bean id="countSqlParser" class="com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize">
        <!-- 设置为 true 可以优化部分 left join 的sql -->
        <property name="optimizeJoin" value="true"/>
    </bean>
    
        //分页查询
        private static void query5(UserMapper userMapper){
            IPage<User> page=new Page<>(1,5);
            userMapper.selectPage(page,null);
            long total=page.getTotal();
            System.out.println("总条数:"+total);
            List<User> list=page.getRecords();
            print(list);
        }
    
    • springboot的分页查询
    //Spring boot方式
    @EnableTransactionManagement
    @Configuration
    @MapperScan("com.baomidou.cloud.service.*.mapper*")
    public class MybatisPlusConfig {
    
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            // paginationInterceptor.setOverflow(false);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            // paginationInterceptor.setLimit(500);
            // 开启 count 的 join 优化,只针对部分 left join
            paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }
    
    
    	//分页查询
    	@Test
    	public void queryForPage() {
    		IPage<User> page=new Page<>(1, 5);
    		userMapper.selectPage(page, null);
    		List<User> list = page.getRecords();
    		for (User user : list) {
    			System.out.println(user);
    		}
    		System.out.println("总条数:"+page.getTotal());
    	}
    	
    

    关于springboot整合mybatisplus这里就简单说到这里。

    二、代码生成器(重点)

    public class CodeGenerator {
    
        /**
         * <p>
         * 读取控制台内容
         * </p>
         */
        public static String scanner(String tip) {
            Scanner scanner = new Scanner(System.in);
            StringBuilder help = new StringBuilder();
            help.append("请输入" + tip + ":");
            System.out.println(help.toString());
            if (scanner.hasNext()) {
                String ipt = scanner.next();
                if (StringUtils.isNotEmpty(ipt)) {
                    return ipt;
                }
            }
            throw new MybatisPlusException("请输入正确的" + tip + "!");
        }
    
        public static void main(String[] args) {
            // 代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            //用户目录即当前目录
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor("小谢");
            gc.setOpen(true);//当代码生成完成后是否打开代码所在的文件夹
            // gc.setSwagger2(true); 实体属性 Swagger2 注解
            mpg.setGlobalConfig(gc);
    
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");
            // dsc.setSchemaName("public");
            dsc.setDriverName("com.mysql.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("root");
            mpg.setDataSource(dsc);
    
            // 包配置
            PackageConfig pc = new PackageConfig();
    //        pc.setModuleName(scanner("模块名"));
            pc.setModuleName("sys");
            pc.setParent("com.xieyunjie");//controller entity  service  service.impl
            pc.setController("controller");
            pc.setEntity("domain");
            pc.setMapper("mapper");
            pc.setService("service");
            pc.setServiceImpl("service.impl");
            //生成后需要更换所在位置到resources目录下
            pc.setXml("mapper.xml");
            mpg.setPackageInfo(pc);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            //设置字段和表名的是否把下划线完成驼峰命名规则
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            //设置生成的实体类继承的父类
    //        strategy.setSuperEntityClass("com.xieyunjie.BaseEntity");
            strategy.setEntityLombokModel(true);//是否启动lombok
            strategy.setRestControllerStyle(true);//是否生成resetController
            // 公共父类
    //        strategy.setSuperControllerClass("com.xieyunjie.BaseController");
            // 写于父类中的公共字段
    //        strategy.setSuperEntityColumns("person_id","person_name");
            //要设置生成哪些表 如果不设置就是生成所有的表
    //        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
            strategy.setControllerMappingHyphenStyle(true);
    //        strategy.setTablePrefix(pc.getModuleName() + "_");
            strategy.setTablePrefix("sys_");
            mpg.setStrategy(strategy);
            mpg.execute();
        }
    
    
    

    效果这里就不再展示了,谢谢!

    天涯志

  • 相关阅读:
    poj 1984 Navigation Nightmare(带权并查集+小小的技巧)
    zoj 3261 Connections in Galaxy War(并查集逆向加边)
    poj 1733 Parity game(带权并查集)
    poj 1456 Supermarket(贪心+优先队列)
    hdu 3038 How Many Answers Are Wrong(并查集的思想利用)
    poj 1182 食物链(种类并查集 ‘初心者’)
    hdu 1182 A Bug's Life(简单种类并查集)
    hdu 4725 The Shortest Path in Nya Graph(建图+优先队列dijstra)
    CodeForces 779D. String Game(二分答案)
    poj 3169 Layout(差分约束+spfa)
  • 原文地址:https://www.cnblogs.com/cainiaoxiaoxie/p/12823576.html
Copyright © 2020-2023  润新知