Springboot 2.0 + SSM + druid + 通用Mapper外掛 + lombck +mybatis-generator-lombok-plugin 整合範例
阿新 • • 發佈:2018-12-21
前言(各位大神不用看前言,直接去正文)
springBoot
druid連線池
通用Mapper外掛
lombck
正文
druid連線池配置
POM
<!--連線池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency>
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql:///conference?useUnicode=true&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT spring.datasource.username=admin spring.datasource.password=admin #舊版驅動為com.mysql.jdbc.Driver spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver #dataSource Pool configuration spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=60000 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false #spring.datasource.exceptionSorter=true spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.filters=stat,wall spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
1) 配置監控統計功能:
/** * druid監控檢視配置 * @ClassName: DruidStatViewServlet * @author CoffeeAndIce * @date 2017年7月24日 上午10:54:27 */ @WebServlet(urlPatterns = "/druid/*", initParams={ @WebInitParam(name="allow",value=""),// IP白名單 (沒有配置或者為空,則允許所有訪問) @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名單 (存在共同時,deny優先於allow) @WebInitParam(name="loginUsername",value="admin"),// 使用者名稱 @WebInitParam(name="loginPassword",value="admin"),// 密碼 @WebInitParam(name="resetEnable",value="true")// 禁用HTML頁面上的“Reset All”功能 }) public class DruidStatViewServlet extends StatViewServlet { private static final long serialVersionUID = 2359758657306626394L; }
2)過濾不需要監控的字尾:
/** * 配置監控攔截器 * druid監控攔截器 * @ClassName: DruidStatFilter */ @WebFilter(filterName="druidWebStatFilter", urlPatterns="/*", initParams={ @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"),// 忽略資源 }) public class DruidStatFilter extends WebStatFilter { }
啟動類加入連線池,這個寫法很多
import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.annotation.Bean; import javax.sql.DataSource; @SpringBootApplication @ServletComponentScan public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean("duridDatasource") @ConfigurationProperties(prefix="spring.datasource") public DataSource druidDataSource() { return new DruidDataSource(); } }
@ServletComponentScan 註解一定要加 還有注意自己的包一定要和啟動類同一級
通用Mapper外掛
POM
<!--mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.2.4</version> </dependency>
application.properties
#mybatis&&通用Mapper mybatis.type-aliases-package=com.example.demo.entity.Conference mybatis.mapper-locations=classpath:mapperz/*.xml mapper.mappers=com.example.demo.dao.ConferenceMapper mapper.identity=MYSQL
在啟動類上加上MapperScan註解(不要導錯包)
import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.annotation.Bean; import tk.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; @SpringBootApplication @ServletComponentScan @MapperScan(basePackages = { "com.example.demo.dao" }) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean("duridDatasource") @ConfigurationProperties(prefix="spring.datasource") public DataSource druidDataSource() { return new DruidDataSource(); } }
lombck配置
把原始碼弄下來(下載,或者用git都可以)
maven clean install 加到你的maven倉庫
外掛使用
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <!-- mvn mybatis-generator:generate --> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> <configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>com.chrm</groupId> <artifactId>mybatis-generator-lombok-plugin</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <executions> <execution> <id>Generate MyBatis Artifacts</id> <phase>deploy</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
新增配置檔案generatorConfig.xml
使用的時候請根據專案需要自行修改對應配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="default" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <property name="javaFileEncoding" value="UTF-8"/> <!-- 該外掛給實體類新增toString()方法 --> <!-- <plugin type="org.mybatis.generator.plugins.ToStringPlugin" /> --> <!-- 這個外掛給由MBG生成的Java模型物件增加了equals和hashCode方法 --> <!-- <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /> --> <!-- 分頁相關 --> <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin" /> <!-- 帶上序列化介面 --> <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> <!-- 自定義的註釋生成外掛--> <plugin type="com.chrm.mybatis.generator.plugins.CommentPlugin"> <!-- 抑制警告 --> <property name="suppressTypeWarnings" value="true" /> <!-- 是否去除自動生成的註釋 true:是 : false:否 --> <property name="suppressAllComments" value="false" /> <!-- 是否生成註釋代時間戳--> <property name="suppressDate" value="true" /> </plugin> <!-- 整合lombok--> <plugin type="com.chrm.mybatis.generator.plugins.LombokPlugin" > <property name="hasLombok" value="true"/> </plugin> <plugin type="tk.mybatis.mapper.generator.MapperPlugin"> <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/> <!-- caseSensitive預設false,當資料庫表名區分大小寫時,可以將該屬性設定為true --> <!-- <property name="caseSensitive" value="true"/>--> </plugin> <!-- 不希望生成的註釋中包含時間戳 --> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="true"/> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///conference?characterEncoding=utf8&useSSL=true" userId="admin" password="admin"> </jdbcConnection> <!-- true:使用BigDecimal對應DECIMAL和 NUMERIC資料型別 false:預設, scale>0;length>18:使用BigDecimal; scale=0;length[10,18]:使用Long; scale=0;length[5,9]:使用Integer; scale=0;length<5:使用Short; --> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <javaModelGenerator targetPackage="com.example.demo.entity" targetProject="src/main/java"> <!-- 是否 自動為每一個生成的類建立一個構造方法 --> <!--<property name="constructorBased" value="false"/>--> <!--<property name="useActualColumnNames" value="true"/>--> <!-- 在targetPackage的基礎上,根據資料庫的schema再生成一層package --> <property name="enableSubPackages" value="false"/> <!-- 是否建立一個不可變的類 --> <!--<property name="immutable" value="false"/>--> <!-- 設定是否在getter方法中,對String型別欄位呼叫trim()方法 --> <property name="trimStrings" value="false"/> <!--<property name="rootClass" value="java.io.Serializable" />--> </javaModelGenerator> <!-- 生成SQL map的XML檔案生成器 --> <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources"> </sqlMapGenerator> <javaClientGenerator targetPackage="com.example.demo.dao" targetProject="src/main/java" type="XMLMAPPER"> </javaClientGenerator> <table tableName="conference" domainObjectName="Conference" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <!--mysql 配置--> <generatedKey column="id" sqlStatement="Mysql"/> <!--oracle 配置--> <!--<generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>--> </table> <!-- mvn mybatis-generator:generate --> </context> </generatorConfiguration>
使用mvn mybatis-generator:generate 就可以生成檔案了(通用外掛生成的檔案我只繼承了Mapper<T> 還有個可以批量操作的MySqlMapper<T>,有需要可以自己去了解)
在貼一個完整的pom檔案
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </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> </dependency> <!--連線池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency> <!--mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.2.4</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.6</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!--thymeleaf模板引擎,無需再引入web模組--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- pageHelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> <!--swagger2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> <!-- shiro 相關--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.4.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <!-- mvn mybatis-generator:generate --> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> <configurationFile>src/main/resources/config/generatorConfig.xml</configurationFile> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>com.chrm</groupId> <artifactId>mybatis-generator-lombok-plugin</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <executions> <execution> <id>Generate MyBatis Artifacts</id> <phase>deploy</phase> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
至此整合完成,歡迎大神指點