springboot整合mybatis使用阿里(阿里连接池)和xml方式
源码地址:https://github.com/wuhongpu/springboot-mybatis.git
1、在pom文件中引入相关依赖包
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>zytl.zytrade.cloud</groupId> <artifactId>zytrade-sevice-mobile</artifactId> <version>0.0.1-SNAPSHOT</version> <name>zytrade-sevice-mobile</name> <url>http://maven.apache.org</url>
<!--引入Springboot依赖包-->
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!--eureka依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- 监控生产环境模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--支持Spring依赖包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--支持springmvc包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--mybatis依赖包--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <!-- oracle驱动 --> <dependency> <groupId>org.oracle</groupId> <artifactId>oracle</artifactId> <version>11.2</version> </dependency> <!-- 阿里连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <!-- log4j2 riz日志包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!-- gson驱动包--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.16</version> </dependency> </dependencies> </project>
2、配置文件application.yml
mysql和阿里druid配置 spring: application: name: zytrade-sevice-mobile #指定应用的名称建议使用小写 datasource: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:oracle:thin:@192.168.1.98:1521:orcl #url: jdbc:mysql://localhost/test?useSSL=false&serverTimezone=UTC username: proOne password: proOne123 #username: root #password: 123456 #driver-class-name: com.mysql.jdbc.Driver driver-class-name: oracle.jdbc.driver.OracleDriver # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 initialSize: 1 minIdle: 3 maxActive: 20 # 配置获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 30000 #validationQuery: select 'x' testWhileIdle: false testOnBorrow: false testOnReturn: false # 打开PSCache,并且指定每个连接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 filters: stat,wall,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 useGlobalDataSourceStat: true # mybatis配置 mybatis: mapper-locations: classpath*:/zytrade.service.mobile/*.xml
3、启动类
/** * @Author: wu * @Description: * @Date: Create in 11:19 2017/11/8 * @Modified By: */ @SpringBootApplication @EnableAutoConfiguration //@EnableDiscoveryClient @MapperScan("zytrade.service.mobile.dao")//接口扫描,如果此处不加@MapperScan注解必须在接口类上添加@Mapper注解表明这是一个接口扫描器
public class MposApplication { public static void main(String[] args) { SpringApplication.run(MposApplication.class, args); } }
4、阿里数据池配置类
package zytrade.service.mobile.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration public class DruidDataSourceConfiguration { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource druidDataSource() { DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; } // @Bean // public HttpMessageConverters fastJsonHttpMessageConverters(){ // FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter(); // FastJsonConfig fastJsonConfig=new FastJsonConfig(); // fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // fastConverter.setFastJsonConfig(fastJsonConfig); // HttpMessageConverter<?> converter = fastConverter; // return new HttpMessageConverters(converter); // } }
2、
package zytrade.service.mobile.config;
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*", initParams={ @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源 } ) public class DruidStatFilter extends WebStatFilter { }
3
package zytrade.service.mobile.config; import com.alibaba.druid.support.http.StatViewServlet; import javax.servlet.annotation.WebServlet; import javax.servlet.annotation.WebInitParam; @WebServlet(urlPatterns = "/druid/*", initParams={ @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问) @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow) @WebInitParam(name="loginUsername",value="admin"),// 用户名 @WebInitParam(name="loginPassword",value="123"),// 密码 @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能 }) public class DruidStatViewServlet extends StatViewServlet { private static final long serialVersionUID = 1L; }
5、项目视图
补充log4j2.xml与 mybatis-conf.xml(mybatis全局配置文件)
1、log4j2.xml
<?xml version="1.0" encoding="utf-8"?> <configuration> <properties> <!-- 文件输出格式 --> <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property> </properties> <appenders> <Console name="Console" target="system_out"> <PatternLayout pattern="${PATTERN}" /> </Console> </appenders> <!--配置mybatis日志 --> <loggers> <logger name="log4j.logger.org.mybatis" level="debug" additivity="false"> <appender-ref ref="Console" /> </logger> <logger name="log4j.logger.java.sql" level="debug" additivity="false"> <appender-ref ref="Console" /> </logger> <logger name="com.demo.mapper" level="debug" /> <root level="info"> <appenderref ref="Console" /> </root> </loggers> </configuration>
2、 mybatis-conf.xml
<?xml version="1.0" encoding="utf-8"?> <!-- Copyright 2015-2016 the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--设置mybatis日志类型 --> <settings> <setting name="logImpl" value="LOG4J2" /> <!--配置的缓存的全局开关。 --> <setting name="cacheEnabled" value="true" /> <!--延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 --> <setting name="lazyLoadingEnabled" value="true" /> <!--当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 --> <setting name="jdbcTypeForNull" value="NULL" /> </settings> </configuration>