zoukankan      html  css  js  c++  java
  • Spring Cloud集成 Mybatis-plus使用

    一、Mybatis-plus介绍

    Mybatis-plus是基于Mybatis开发的开源框架

    Mybatis-plus封装了分页、条件查询等内容

    Mybatis-helper可以协议我们更好的使用Mybatis框架

    二、Mybatis-plus配置

    1、在父工程的pom.xml的dependencyManagement中增加。

    这里只做依赖的管理

    <dependencyManagement>
    		<dependencies>
    			<dependency>
    				<groupId>org.springframework.cloud</groupId>
    				<artifactId>spring-cloud-dependencies</artifactId>
    				<version>${spring-cloud.version}</version>
    				<type>pom</type>
    				<scope>import</scope>
    			</dependency>
    
    			<!-- Mybatis-plus时引入的配置start -->
    			<!--mybatis-plus依赖-->
    			<dependency>
    				<groupId>com.baomidou</groupId>
    				<artifactId>mybatis-plus-boot-starter</artifactId>
    				<version>${mybatis.plus.version}</version>
    			</dependency>
    
    			<!--数据源驱动-->
    			<dependency>
    				<groupId>mysql</groupId>
    				<artifactId>mysql-connector-java</artifactId>
    				<version>${mysql.version}</version>
    			</dependency>
    
    			<!-- Druid引入 -->
    			<dependency>
    				<groupId>com.alibaba</groupId>
    				<artifactId>druid-spring-boot-starter</artifactId>
    				<version>${druid.version}</version>
    			</dependency>
    
    			<!--代码生成器-->
    			<dependency>
    				<groupId>com.baomidou</groupId>
    				<artifactId>mybatis-plus-generator</artifactId>
    				<version>${mybatis.plus.version}</version>
    			</dependency>
    
    
    			<dependency>
    				<groupId>com.ibeetl</groupId>
    				<artifactId>beetl</artifactId>
    				<version>${beetl.version}</version>
    			</dependency>
    
    			<!--日志依赖框架-->
    			<dependency>
    				<groupId>log4j</groupId>
    				<artifactId>log4j</artifactId>
    				<version>${log4j.version}</version>
    			</dependency>
    			<!--Mybatis-plus时引入配置结束-->
    
    		</dependencies>
    	</dependencyManagement>
    

      

      

    2、然后backend_common的pom.xml中增加mybatis-plus相关的依赖

    	<!--mybatis-plus依赖-->
    		<dependency>
    			<groupId>com.baomidou</groupId>
    			<artifactId>mybatis-plus-boot-starter</artifactId>
    		</dependency>
    
    		<!-- Druid引入 -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid-spring-boot-starter</artifactId>
    		</dependency>
    
    		<!--数据源驱动-->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    		</dependency>
    
    		<!--代码生成器-->
    		<dependency>
    			<groupId>com.baomidou</groupId>
    			<artifactId>mybatis-plus-generator</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>com.ibeetl</groupId>
    			<artifactId>beetl</artifactId>
    		</dependency>
    
    		<!--日志依赖框架-->
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    		</dependency>
    		<!--mybatis-plus依赖 结束-->
    	</dependencies>
    

      

      

    在build下增加recources,目的在打包的时候,把java下面的所有xml文件打在src/main/resources文件夹下

    3、在工程backend_common 增加Mybatis-plus配置

    1)MybatisPlusConfig 配置文件

    @Configuration
    @EnableTransactionManagement
    @MapperScan(basePackages = {"com.example.demo.common.**.dao.mapper"})
    public class MybatisPlusConfig {
    
        @Bean
        public DruidDataSource dataSource(DruidProperties druidProperties) {
            DruidDataSource dataSource = new DruidDataSource();
            druidProperties.config(dataSource);
            return dataSource;
        }
    
        /**
         * mybatis-plus分页插件
         */
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    
        /**
         * 乐观锁mybatis插件
         */
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }
    
    
    }
    

      

    2)、DruidProperties 配置文件

    @Data
    @Configuration
    @ConfigurationProperties(prefix = "spring.datasource")
    public class DruidProperties {
    
        private String url = "jdbc:mysql://127.0.0.1:3306/backend_user_t?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=UTC";
    
        private String username = "root";
    
        private String password = "123456";
    
        private String driverClassName = "com.mysql.cj.jdbc.Driver";
    
        private Integer initialSize = 2;
    
        private Integer minIdle = 1;
    
        private Integer maxActive = 20;
    
        private Integer maxWait = 60000;
    
        private Integer timeBetweenEvictionRunsMillis = 60000;
    
        private Integer minEvictableIdleTimeMillis = 300000;
    
        private String validationQuery = "SELECT 'x'";
    
        private Boolean testWhileIdle = true;
    
        private Boolean testOnBorrow = false;
    
        private Boolean testOnReturn = false;
    
        private Boolean poolPreparedStatements = true;
    
        private Integer maxPoolPreparedStatementPerConnectionSize = 20;
    
        private String filters = "stat";
    
        public void config(DruidDataSource dataSource) {
    
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
    
            dataSource.setDriverClassName(driverClassName);
            dataSource.setInitialSize(initialSize);     //定义初始连接数
            dataSource.setMinIdle(minIdle);             //最小空闲
            dataSource.setMaxActive(maxActive);         //定义最大连接数
            dataSource.setMaxWait(maxWait);             //最长等待时间
    
            // 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    
            // 配置一个连接在池中最小生存的时间,单位是毫秒
            dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
            dataSource.setValidationQuery(validationQuery);
            dataSource.setTestWhileIdle(testWhileIdle);
            dataSource.setTestOnBorrow(testOnBorrow);
            dataSource.setTestOnReturn(testOnReturn);
    
            // 打开PSCache,并且指定每个连接上PSCache的大小
            dataSource.setPoolPreparedStatements(poolPreparedStatements);
            dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
    
            try {
                dataSource.setFilters(filters);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
    }
    

      

      

    3)数据层内容生成

    /*
        数据层内容生成
     */
    public class EntityGenerator {
    
        // 生成输出目录,定位到工程的java目录下
        private String outputDir = "D:\workspace\springboot\backend_parent\backend_common\src\main\java";
        // 生成类的作者
        private String author = "nick";
        // 数据源相关配置
        private String url = "jdbc:mysql://127.0.0.1:3306/springclouddeep?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=UTC";
        private String driverName = "com.mysql.cj.jdbc.Driver";
        private String userName = "root";
        private String userPwd = "123456";
        // DAO的包路径
        private String daoPackage = "com.example.demo.common";
        // 待生成的表名,注意是覆盖更新
        private static String[] tableNames;
    
        static{
            tableNames = new String[]{
                    "backend_user_t"
            };
        }
    
        public static void main(String[] args) {
            EntityGenerator entityGenerator = new EntityGenerator();
            entityGenerator.entityGenerator();
        }
    
        //@Test
        public void entityGenerator() {
            AutoGenerator mpg = new AutoGenerator();
            mpg.setTemplateEngine(new BeetlTemplateEngine());
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            gc.setOutputDir(outputDir);
            gc.setFileOverride(true);
            gc.setActiveRecord(true);
            gc.setEnableCache(false);
            gc.setBaseResultMap(true);
            gc.setBaseColumnList(false);
            gc.setAuthor(author);
            mpg.setGlobalConfig(gc);
    
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl(url);
            // dsc.setSchemaName("public");
            dsc.setDriverName(driverName);
            dsc.setUsername(userName);
            dsc.setPassword(userPwd);
            mpg.setDataSource(dsc);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            //strategy.setTablePrefix(new String[]{"_"});// 此处可以修改为您的表前缀
            strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
            strategy.setInclude(tableNames);
            mpg.setStrategy(strategy);
    
            // 包配置
            PackageConfig pc = new PackageConfig();
            pc.setParent(null);
            pc.setEntity(daoPackage+".entity");
            pc.setMapper(daoPackage+".mapper");
            pc.setXml(daoPackage+".mapper.xml");
            mpg.setPackageInfo(pc);
    
            // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
            InjectionConfig cfg = new InjectionConfig() {
                @Override
                public void initMap() {
                    Map<String, Object> map = new HashMap<>();
                    map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                    this.setMap(map);
                }
            };
    
            mpg.setCfg(cfg);
    
            // 执行生成
            mpg.execute();
    
            // 打印注入设置
            System.err.println(mpg.getCfg().getMap().get("abc"));
    
        }
    
    }
    

      

    然后运行main方法。生成的文件如下图所示

  • 相关阅读:
    站点目录中的文件夹被删除后,应用程序池被重启
    silverlight中UserControl的属性在xaml文件中敲不出来的问题
    提取自Discuz NT 的验证码生成
    Asp.net首页生成静态页的一个比较好的方法
    asp.net 字符串格式化
    阻止用户关闭网页,提示保存的解决方案IE/FF/OP通用(未经测试)
    .NET程序如何防止被注入(整站)
    好久没有进步了
    C#数组排序
    我的静态页面
  • 原文地址:https://www.cnblogs.com/linlf03/p/12456118.html
Copyright © 2011-2022 走看看