SpringBoot项目初始化配置以及整合Mybatis Plus
2020-07-18 05:07
531 查看
SpringBoot项目初始化配置以及整合Mybatis Plus
- SpringBoot项目初始化配置以及整合Mybatis Plus
- 一、pom.xml文件配置
- 二、Springboot文件配置
- 三、生成entity、service、mapper、controller
- 四、Application启动类
- 五、MybatisPlus分页
- 六、总结
SpringBoot项目初始化配置以及整合Mybatis Plus
工具idea2020.1.2
一、pom.xml文件配置
这里直接导入相关的一些配置文件,包括mybatis plus以及druid
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mpdemo</groupId> <artifactId>base-ingage-global</artifactId> <version>0.0.1-SNAPSHOT</version> <name>base-ingage-global</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR6</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version> </dependency> </dependencies> <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> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> </resource> </resources> </build> </project>
二、Springboot文件配置
application.yml文件以及application-dao.properties自定义的一个配置。application.yml中主要为数据库连接池的一些配置
spring: datasource: #1.JDBC type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/base_global?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai username: root password: admin #2.连接池配置 druid: #初始化连接池的连接数量 大小,最小,最大 initial-size: 5 min-idle: 5 max-active: 20 #配置获取连接等待超时的时间 max-wait: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 #配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 30000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: true test-on-return: false #是否缓存preparedStatement,也就是PSCache pool-prepared-statements: false max-pool-prepared-statement-per-connection-size: 20 #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filter: stat: merge-sql: true slow-sql-millis: 5000 #3.基础监控配置 web-stat-filter: enabled: true url-pattern: /* #设置不统计哪些URL exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" session-stat-enable: true session-stat-max-count: 100 stat-view-servlet: enabled: true url-pattern: /druid/* reset-enable: true #设置监控页面的登录名和密码 login-username: admin login-password: admin allow: 127.0.0.1 server: port: 8080 servlet: context-path: /
这里我将mapper文件放到了resources下面的mapping问价夹下,所以application-dao.properties配置了mapper.xml 的文件引用路径配置
mybatis-plus.mapper-locations=classpath*:/mapping/*.xml
三、生成entity、service、mapper、controller
创建好表之后直接使用mybatis plus逆向工程直接生成即可,pom中添加依赖包
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
添加模板引擎依赖,mybatis plus支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。
Velocity(默认):
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version> </dependency>
Freemarker:
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency>
这里我选择Freemarker
package com.mpdemo.mpconfig; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.util.*; /** * @ProjectName: mybatis-plus * @Package: com.jiangfeixiang.mybatisplus.mpconfig * @ClassName: CodeGenerator */ public class CodeGenerator { /** * 读取控制台内容 */ 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 globalConfig = new GlobalConfig(); //生成文件的输出目录 String projectPath = System.getProperty("user.dir"); globalConfig.setOutputDir(projectPath + "/src/main/java"); //Author设置作者 globalConfig.setAuthor("xxx"); //是否覆盖文件 globalConfig.setFileOverride(true); //生成后打开文件 globalConfig.setOpen(false); mpg.setGlobalConfig(globalConfig); /** * 数据源配置 */ DataSourceConfig dataSourceConfig = new DataSourceConfig(); // 数据库类型,默认MYSQL dataSourceConfig.setDbType(DbType.MYSQL); //自定义数据类型转换 dataSourceConfig.setTypeConvert(new MySqlTypeConvert()); dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/base_global?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false"); dataSourceConfig.setDriverName("com.mysql.jdbc.Driver"); dataSourceConfig.setUsername("root"); dataSourceConfig.setPassword("admin"); mpg.setDataSource(dataSourceConfig); /** * 包配置 */ PackageConfig pc = new PackageConfig(); pc.setModuleName(scanner("模块名")); //父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名 pc.setParent("com.jiangfeixiang.mpdemo"); mpg.setPackageInfo(pc); /** * 自定义配置 */ InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; /** * 模板 */ //如果模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 如果模板引擎是 velocity // String templatePath = "/templates/mapper.xml.vm"; /** * 自定义输出配置 */ List<FileOutConfig> focList = new ArrayList<>(); // 自定义配置会被优先输出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(TableInfo tableInfo) { // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! return projectPath + "/src/main/resources/mapper/"+ pc.getModuleName() + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); /** * 配置模板 */ TemplateConfig templateConfig = new TemplateConfig(); // 配置自定义输出模板 //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 // templateConfig.setEntity("templates/entity2.java"); // templateConfig.setService(); // templateConfig.setController(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); /** * 策略配置 */ StrategyConfig strategy = new StrategyConfig(); //设置命名格式 strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); //实体是否为lombok模型(默认 false) strategy.setEntityLombokModel(true); //生成 @RestController 控制器 strategy.setRestControllerStyle(true); //设置自定义继承的Entity类全称,带包名 //strategy.setSuperEntityClass("com.jiangfeixiang.mpdemo.BaseEntity"); //设置自定义继承的Controller类全称,带包名 //strategy.setSuperControllerClass("com.jiangfeixiang.mpdemo.BaseController"); //设置自定义基础的Entity类,公共字段 strategy.setSuperEntityColumns("id"); //驼峰转连字符 strategy.setControllerMappingHyphenStyle(true); //表名前缀 strategy.setTablePrefix(pc.getModuleName() + "_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } }
四、Application启动类
这里多加了一个配置文件,使用@PropertySources将配置文件加进来
package com.mpdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySources; @SpringBootApplication @PropertySources({ @PropertySource("classpath:application-dao.properties") }) public class BaseIngageGlobalApplication { public static void main(String[] args) { SpringApplication.run(BaseIngageGlobalApplication.class, args); } }
五、MybatisPlus分页
1、添加一个配置文件类MybatisPlusConfig.class
package com.mpdemo.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement @Configuration 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; } }
2、service中添加分页方法
@Override public IPage<User> getPage(User user) { Page page = new Page(0,20); return bUserMapper.getPage(page, user); }
3、mapper中添加方法
IPage<User> getPage(Page page, @Param("user") User user);
4、xml中添加查询,名字一定要和mapper中对应
<select id="getPage" resultType="com.mpdemo.base.entity.User"> select * from user <where> <if test="user.name != null"> name = #{user.name} </if> </where> </select>
六、总结
至此,所有的配置都已经完成,通过controller去写接口进行测试。后续将进行eurker的配置,分布式id生成器,以及多数据源的一些配置。
相关文章推荐
- SpringBoot与MyBatis-Plus整合的配置文件,以及SSM相关配置文件
- springboot学习笔记-2 一些常用的配置以及整合mybatis
- Spring Boot整合Mybatis-Plus和PageHelper分页插件,附项目源码
- Springboot项目创建、与mybatis整合以及dao层测试
- renren-generator开源项目中springboot整合mybatis-plus的坑
- Spring+Spring MVC+Mybatis整合配置AOP不生效的解决方案以及Bean初始化重复加载两次(疑难杂症)
- Web项目下整合springBoot+springMVC+mybatis+boot内嵌tomcat以及所需jar包
- springboot整合mybatis-plus用AutoGenerator搭建项目
- Springboot项目整合MyBatis配置多数据源
- IDEA搭建SpringBoot项目,整合mybatis中出现的错误以及解决办法
- eclipse 中创建 整合springmvc+mybatis+maven 的java web项目步骤,以及maven仓库配置
- 整合SpringBoot + MybatisPlus 搭建JAVA多模块项目基本骨架
- Spring boot项目整合mybatis,xml静态资源文件的放置及路径配置问题
- springboot和mybatisPlus整合流程
- SpringBoot整合Mybatis-plus笔记
- Springboot整合MybatisPlus的实现过程解析
- Springboot整合Mybatis-Plus
- Spring Boot 集成 Mybatis(druid 数据库连接池 以及 分页配置)
- spring boot 与mybatis整合,type-aliases-package、type-handlers-package等配置不起作用,导致类加载失败
- spring boot整合mybatis+mybatis-plus