使用xml配置文件的方式获取sql会话
步骤规范说明
config
根据ibatis
全局配置规范,设定满足当前环境的配置.Resources
若是单独测试环境,可使用ibatis
内置的便捷资源加载类对象
org.apache.ibatis.io.Resources
若是整合的环境,根据特定需求,选择的使用资源加载的方式.SqlSessionFactoryBuilder
创建sql会话创建工厂
实例,以此来创建sql会话工厂
,
org.apache.ibatis.session.SqlSessionFactoryBuilder
SqlSessionFactoryBuilder
的生命周期应当在局域作用域
内;
即method-scope
.- 其主要作用就是生成
SqlSessionFactory
对象.
当其完成任务后,就没有存在的意义了.
SqlSessionFactory
使用sql会话工厂
实例,打开sql会话
的实例.可参考的类对象为:
org.apache.ibatis.session.SqlSessionFactory
SqlSessionFactory
应当存在于ibatis
应用的整个生命周期;
即application-scope
- 建议且应当使用
单例模式
创建其类对象的实例;
SqlSession
sql会话工厂实例获取后,可通过其来获取sql会话
实例,
以此来与数据库建立连接关系
,从而进行所需的数据操作.
可参考的类对象为:
org.apache.ibatis.session.SqlSession
SqlSession
类对象实例应当存在于局部作用域中;
即method-scope
.- 它是
非线程安全
的,涉及多线程的时候,要考虑线程安全性
的问题. - 若不使用当前的
SqlSession
实例时,要及时的关闭资源
连接.
Mapper
- 映射器是个接口,没有任何实现类;
- 作用主要是执行
sql语句
,返回执行结果; - 作用域应当
包含在
sqlSession的范围之内; - 当使用新式的
mapper接口
方式的时候,就需要使用到
此Mapper
接口的动态代理实现类,来便捷的操作数据库中的数据.
测试步骤主要截取
- 全局配置文件
<configuration> <properties resource="siye/ibatis/config/db.properties" /> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <environments default="test"> <environment id="test"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <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> <mappers> <mapper resource="siye/ibatis/dao/WayOldUse.xml" /> <package name="siye.ibatis.dao" /> </mappers> </configuration>
- 主要测试类片段截取
// 加载配置,获取sqlSessionFactory实例. String path = "siye/ibatis/config/config.xml"; InputStream is = Resources.getResourceAsStream(path); factory = new SqlSessionFactoryBuilder().build(is); SqlSession session = factory.openSession(true); Connection connection = session.getConnection(); log.info(connection); session.close();
使用纯java的方式获取sql会话
参考说明
仅作了解,一般不建议使用此种方式,来使用ibatis
操作数据库.
- 可维护性较低,因为
java
本身的硬编码特性; - 后期扩展任务繁重,导致增加任务量;
- 仅作了解,不建议使用;
使用规范参考
Properties
java类库中,内置的处理属性配置文件的类对象.
使用此类对象来加载数据库连接文件,或设置其文件;
可参考:java.util.Properties
PooledDataSource
数据源
配置类对象,建议使用的模式.
使用此类对象,创建带有连接池特性的数据源,
便于连接资源的有效利用.
可参考:
org.apache.ibatis.datasource.pooled.PooledDataSource
- 也有其他模式选择,可参考
DataSource
的具体实现类;
javax.sql.DataSource
JdbcTransactionFactory
设置数据库连接的事务管理
的模式;
一般都选择JDBC
.具体路径为:
org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
Environment
用来包装ORM
框架配置环境的信息
可参考的类对象具体路径为:
org.apache.ibatis.mapping.Environment
- 环境的唯一标识符
- 事务管理的方式
- 数据源方式的设定
Configuration
用来包装配置环境,其具体路径为:
org.apache.ibatis.session.Configuration
SqlSessionFactoryBuilder
省略SqlSessionFactory
省略SqlSession
省略Mapper
省略
测试步骤主要片段截取
- 无需配置文件,纯java的方式;
若是配置了数据库连接信息的属性配置文件
,
指明其具体的存储路径即可; - 纯java代码连接测试的片段截取
String path = "siye/ibatis/config/db.properties"; InputStream is = Resources.getResourceAsStream(path); Properties props = new Properties(); props.load(is); PooledDataSource pooledDataSource = new PooledDataSource( props.getProperty("jdbc.driver"), props.getProperty("jdbc.url"), props.getProperty("jdbc.username"), props.getProperty("jdbc.password")); JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("test", jdbcTransactionFactory, pooledDataSource); Configuration configuration = new Configuration(environment); configuration.setMapUnderscoreToCamelCase(true); // ... 中间还可设置其他配置项.譬如, addMappers() . factory = new SqlSessionFactoryBuilder().build(configuration); SqlSession session = factory.openSession(true); Connection connection = session.getConnection(); log.info(connection);