您的位置:首页 > 编程语言 > Java开发

Springboot 2.0 + SSM + druid + 通用Mapper插件 + lombck +mybatis-generator-lombok-plugin 整合范例

2018-11-16 09:26 851 查看

前言(各位大神不用看前言,直接去正文)

springBoot 

          官网:https://spring.io/projects/spring-boot

          idea 如何搭建Spring Boot项目 https://www.cnblogs.com/pengyan-9826/p/8093099.html   (第三步的时候还可以勾选其他的东西看自己需要,当然不勾也没事)

           eclipse 如何搭建Spring Boot 项目 https://blog.csdn.net/a_helloword/article/details/81052834  (没测试过,顺便安利一下IDEA,真的比eclipse好用太多了顺便贴个地址eclipse转idea 地址吧https://www.geek-share.com/detail/2707421781.html)

druid连接池

          源代码仓库地址是 https://github.com/alibaba/druid

          详细介绍 https://www.geek-share.com/detail/2707655648.html

通用Mapper插件

          官网:https://www.oschina.net/p/mybatis-mapper 

lombck

          官网:https://projectlombok.org/download

          详细介绍:https://www.geek-share.com/detail/2733027740.html

正文

druid连接池配置

POM

[code]<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.8</version>
</dependency>

application.properties(配置详细讲解:https://www.jianshu.com/p/7a0f32982dcd)

[code]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)  配置监控统计功能:

[code]/**
* 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)过滤不需要监控的后缀:

[code]/**
* 配置监控拦截器
* 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 {

}

 启动类加入连接池,这个写法很多

[code]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 注解一定要加 还有注意自己的包一定要和启动类同一级

访问http://localhost:8099/druid/login.html (账号密码都是admin)

 通用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配置

     lombck 源码地址https://github.com/GuoGuiRong/mybatis-generator-lombok-plugin

     把源码弄下来(下载,或者用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&amp;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>

 至此整合完成,欢迎大神指点

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: