原文鏈接:https://blog.csdn.net/jimolangge123/article/details/49228255
MyBatis框架主要是圍繞着SqlSessionFactory這個類進行的,這個的創建過程如下:
- 定義一個Configuration對象,其中包含數據源、事務、mapper文件資源以及影響數據庫行為屬性設置settings
- 通過配置對象,則可以創建一個SqlSessionFactoryBuilder對象
- 通過 SqlSessionFactoryBuilder 獲得SqlSessionFactory 的實例。
- SqlSessionFactory 的實例可以獲得操作數據的SqlSession實例,通過這個實例對數據庫進行操作
具體看看SqlSessionFactory的創建
一、通過Configuration.xml配置文件進行創建
1.配置文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"
>
<configuration>
<properties resource=
"ssm/jdbc.properties"
></properties>
<environments
default
=
"development"
>
<environment id=
"development"
>
<transactionManager type=
"JDBC"
/>
<dataSource type=
"POOLED"
>
<property name=
"driver"
value=
"${jdbc.driverClassName}"
/>
<property name=
"url"
value=
"${jdbc.url}"
/>
<property name=
"username"
value=
"${jdbc.username}"
/>
<property name=
"password"
value=
"${jdbc.password}"
/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource=
"ssm/BlogMapper.xml"
/>
</mappers>
</configuration>
|
2.讀取配置文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package
ssm;
import
java.io.IOException;
import
java.io.Reader;
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
com.sm.model.User;
public
class
GetSqlSessionFactoryFromXML {
public
static
void
main(String[] args)
throws
IOException {
//配置文件的名稱
String resource =
"ssm/configuration.xml"
;
//通過Mybatis包中的Resources對象很輕松的獲取到配置文件
Reader reader = Resources.getResourceAsReader(resource);
//通過SqlSessionFactoryBuilder創建
SqlSessionFactory sqlSessionFactory =
new
SqlSessionFactoryBuilder().build(reader);
//獲得session實例
SqlSession session =sqlSessionFactory.openSession();
User user =
new
User();
user.setId(
8
);
//完成數據庫的插入
session.insert(
"add"
, user);
session.commit();
session.close();
System.out.println(sqlSessionFactory);
}
}
|
二、在程序中構建這些對象來創建
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
package
ssm;
import
java.sql.SQLException;
import
javax.sql.DataSource;
import
org.apache.ibatis.datasource.pooled.PooledDataSource;
import
org.apache.ibatis.mapping.Environment;
import
org.apache.ibatis.session.Configuration;
import
org.apache.ibatis.session.SqlSession;
import
org.apache.ibatis.session.SqlSessionFactory;
import
org.apache.ibatis.session.SqlSessionFactoryBuilder;
import
org.apache.ibatis.transaction.TransactionFactory;
import
org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import
com.sm.model.User;
public
class
GetSqlSessionFactoryFromProgram {
public
static
void
main(String[] args)
throws
SQLException {
String driver =
"oracle.jdbc.OracleDriver"
;
String url =
"jdbc:oracle:thin:@localhost:1521:orcl"
;
String username=
"scott"
;
String password=
"tiger"
;
//創建使用緩存池的數據源
/*
* <dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
*/
DataSource dataSource =
new
PooledDataSource(driver,url,username,password);
//創建事務
/*
* <transactionManager type="JDBC" />
*/
TransactionFactory transactionFactory =
new
JdbcTransactionFactory();
Environment environment =
new
Environment(
"development"
, transactionFactory, dataSource);
Configuration configuration =
new
Configuration(environment);
//加入資源
/*
* <mapper resource="ssm/BlogMapper.xml"/>
*/
configuration.addMapper(UserMapper.
class
);
SqlSessionFactory sqlSessionFactory =
new
SqlSessionFactoryBuilder().build(configuration);
System.out.println(sqlSessionFactory);
SqlSession session = sqlSessionFactory.openSession();
User user =
new
User();
user.setId(
6
);
session.insert(
"add"
, user);
session.commit();
session.close();
}
}
|
三、通過與Spring集成,由Spring容器管理創建
1. 在spring的配置文件applicationContext.xml中配置
|
1
2
3
4
5
|
<bean id=
"sessionFactory"
class
=
"org.mybatis.spring.SqlSessionFactoryBean"
>
<property name=
"dataSource"
ref=
"dataSource"
/>
<property name=
"configLocation"
value=
"classpath*:conf/configuration.xml"
/>
</bean>
|
如果使用則直接注入,獲取SqlSessionFactory實例即可。
