接 上章 Java 数据库之Mybatis(一) Console app使用Mybatis,这节集成一下Druid连接池:
目录结构
所有包路径在这里查看:
![](https://img.haomeiwen.com/i15014728/d760612d0b752944.png)
新增加的构建:
- 增加的依赖项(dependencies):
- 缓存池 druid
- 日志库 logback
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>org.example</groupId>
<artifactId>ConsoleMybatisDruid</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<java.version>11</java.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.23</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
- 新增类 DruidDataSourceFactory 如下:
package config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;
public class DruidDataSourceFactory extends UnpooledDataSourceFactory {
public DruidDataSourceFactory() {
dataSource = new DruidDataSource();
}
}
- 修改 mybatis-config 如下:
<?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>
<environments default="test">
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="config.DruidDataSourceFactory">
<property name="driverClass" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:file:E:\\temp\\h2test"/>
<property name="username" value="admin"/>
<property name="password" value="admin"/>
<property name="testWhileIdle" value="false" />
</dataSource>
</environment>
</environments>
<!-- 映射器 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
其中注意:
-
<dataSource type="config.DruidDataSourceFactory">
的变动; -
<property name="driverClass" value="org.h2.Driver"/>
的变动; - 新增
<property name="testWhileIdle" value="false" />
- 关于logback的配置:
可以不配置 默认以trace的模式输出到控制台
;也可以简单配置为如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
- AppMain类:
import dao.IDaoUser;
import domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.UUID;
public class AppMain {
public static void main(String []args){
try(
InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream("mybatis-config.xml")
){
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try(
SqlSession sqlSession = sqlSessionFactory.openSession()
){
IDaoUser user = sqlSession.getMapper(IDaoUser.class);
if(null != user){
user.dropTable("user");
user.createTable("create table user(id varchar(36) primary key, name varchar(100), sex varchar(4))");
user.insertUser(UUID.randomUUID().toString(), "小青","男");
user.insertUser(UUID.randomUUID().toString(), "小红","女");
user.insertUser(UUID.randomUUID().toString(), "小紫","男");
user.insertUser(UUID.randomUUID().toString(), "小兰","女");
user.insertUser(UUID.randomUUID().toString(), "小虎","男");
user.insertUser(UUID.randomUUID().toString(), "小白","女");
List<User> users = user.selectAll("user");
for(User var : users){
System.out.println(var.getId() + "," + var.getName() + "," + var.getSex());
}
}
}
}catch (IOException e){
e.printStackTrace();
}
}
}
网友评论