在写jar程序,而不是web程序的时候,使用mybatis作为持久层,可以集成POOLED连接池,而阿里的druid不能用,确实很郁闷。不过有办法。
首先准备好数据库配置文件
然后对Druid进行一个简单的封装
package org.reader.datasource; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.datasource.DataSourceFactory; import com.alibaba.druid.pool.DruidDataSource; /** * 自定义类,用于将druid集成到配置文件中 * @author Administrator * */ public class DruidDataSourceFactory implements DataSourceFactory { private Properties props; @Override public void setProperties(Properties props) { this.props = props; } @Override public DataSource getDataSource() { DruidDataSource dds = new DruidDataSource(); dds.setDriverClassName(this.props.getProperty("driver")); dds.setUrl(this.props.getProperty("url")); dds.setUsername(this.props.getProperty("username")); dds.setPassword(this.props.getProperty("password")); // 其他配置可以根据MyBatis主配置文件进行配置 try { dds.init(); } catch (SQLException e) { e.printStackTrace(); } return dds; } }
封装好之后,可以在mybatis的配置文件中使用了
<?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> <!-- 引用db.properties配置文件 --> <properties resource="resource/db.properties" /> <typeAliases> <typeAlias type="org.reader.datasource.DruidDataSourceFactory" alias="DRUID" /> </typeAliases> <!-- 配置分页插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库 --> <property name="dialect" value="mysql" /> </plugin> </plugins> <!-- development : 开发模式 work : 工作模式 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="DRUID"> <!-- value属性值引用db.properties配置文件中配置的值 --> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- mybatis的mapper文件,每个xml配置文件对应一个接口 --> <mappers> <mapper resource="*1.xml" /> <mapper resource="*2.xml" /> </mappers> </configuration>
然后就可以使用了
package org.reader.util; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.reader.dao.TbResourceMapper; import org.reader.model.TbResourceExample; public class MyBatisUtil { /* * 定义配置文件的位置 */ private static final String CONFIG_PATH = "mybatis/mybatis.xml"; /* * 获取数据库访问链接 */ public static SqlSession getSqlSession() { SqlSession session = null; try { InputStream stream = Resources.getResourceAsStream(CONFIG_PATH); // 可以根据配置的相应环境读取相应的数据库环境 // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream, "development"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream); session = factory.openSession(); } catch (Exception e) { e.printStackTrace(); } return session; } /* * 获取数据库访问链接 */ public static void closeSession(SqlSession session) { session.close(); } public static void main(String[] args) { SqlSession sqlSession = MyBatisUtil.getSqlSession(); Mapper test = sqlSession.getMapper(Mapper.class); System.out.println(test.countByExample(new Example())); MyBatisUtil.closeSession(sqlSession); } }
时间: 2024-12-26 00:48:47