pom.xml 依赖
<?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</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.19</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
新建配置类,实现 mybatis 的 DataSourceFactory 接口
Druid 中也有一个叫 DruidDataSourceFactory 的类,怕混淆就取其它名字。
package com.config; import com.alibaba.druid.pool.DruidDataSource; import org.apache.ibatis.datasource.DataSourceFactory; import javax.sql.DataSource; import java.sql.SQLException; import java.util.Properties; public class DruidDataSourceFactory implements DataSourceFactory { private Properties properties; @Override public void setProperties(Properties properties) { this.properties = properties; } @Override public DataSource getDataSource() { DruidDataSource dds = new DruidDataSource(); dds.setUrl(this.properties.getProperty("url")); dds.setUsername(this.properties.getProperty("username")); dds.setPassword(this.properties.getProperty("password")); try { dds.init(); } catch (SQLException e) { e.printStackTrace(); } return dds; } }
配置文件 mybatis-config.xml,数据源类型为配置类全类名
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 外部 properties 配置文件 --> <properties resource="db.properties"/> <!--配置数据源--> <environments default="development-mysql"> <environment id="development-mysql"> <transactionManager type="JDBC"/> <dataSource type="com.config.DruidDataSourceFactory"> <property name="url" value="${jdbc.jdbcUrl}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- mappers:将 SQL 映射文件注册到全局配置中 --> <mappers> <!-- 引用类路径下的 SQL 映射文件 --> <mapper resource="mapper/XXXMapper.xml"/> </mappers> </configuration>
数据库连接信息 db.properties
jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT jdbc.user=root jdbc.password=root
测试
public static void main(String[] args) { SqlSession session = null; SqlSession batchSession = null; try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); session = sqlSessionFactory.openSession(); batchSession = sqlSessionFactory.openSession(ExecutorType.BATCH); // 不用接口的方式 // User user = session.selectOne("com.dao.UserMapper.selectUser",1); session.commit(); batchSession.commit(); } catch (IOException e) { e.printStackTrace(); } finally { if (session != null) { session.close(); } if (batchSession != null) { batchSession.close(); } } }
https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE