mybatis是一個(gè)支持普通sql查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。mybatis消除了幾乎所有的jdbc代碼和參數(shù)的手工設(shè)置以及對(duì)結(jié)果集的檢索封裝。mybatis可以使用簡(jiǎn)單的xml或注解用于配置和原始映射,將接口和java的pojo(plain old java objects,普通的java對(duì)象)映射成數(shù)據(jù)庫中的記錄。
1.創(chuàng)建工程,導(dǎo)入jar包
創(chuàng)建一個(gè)java工程或者web工程都可以,然后導(dǎo)入mybatis的jar包和依賴包還有數(shù)據(jù)庫的jar包,本人使用oracle10g數(shù)據(jù)庫
mybatis-3.2.2.jar 核心驅(qū)動(dòng)
asm-3.3.1.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-ga.jar
log4j-1.2.17.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
classes12.jar oracle10g的jar包
2.創(chuàng)建連接數(shù)據(jù)庫的核心配置文件sqlmapconfig.xml
在src目錄底下,創(chuàng)建sqlmapconfig.xml文件
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
|
<?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> <!--配置數(shù)據(jù)源,環(huán)境--> <!--可以配置多個(gè)環(huán)境,一個(gè)測(cè)試時(shí)候用的,一個(gè)上線時(shí)候用的--> <environments default = "test" > <!--測(cè)試環(huán)境--> <environment id= "test" > <!--配置事務(wù) : jdbc事務(wù)/managed交給容器的事務(wù)--> <transactionmanager type= "jdbc" ></transactionmanager> <!--數(shù)據(jù)源 : pooled池化/unpooled非池化/jndi密碼加密,安全性高--> <datasource type= "pooled" > <property name= "driver" value= "oracle.jdbc.oracledriver" /> <property name= "url" value= "jdbc:oracle:thin:@localhost:1521:orcl" /> <property name= "username" value= "scott" /> <property name= "password" value= "luogg" /> </datasource> </environment> <!--服務(wù)器環(huán)境--> <environment id= "deploy" > <transactionmanager type= "jdbc" ></transactionmanager> <datasource type= "pooled" > <property name= "driver" value= "oracle.jdbc.oracledriver" /> <property name= "url" value= "jdbc:oracle:thin:@localhost:1521:orcl" /> <property name= "username" value= "scott" /> <property name= "password" value= "luogg" /> </datasource> </environment> </environments> <mappers> <mapper resource= "com/luogg/mapper/personmapper.xml" /> </mappers> </configuration> |
3.在src底下創(chuàng)建test文件夾,在test文件夾下創(chuàng)建testmybatis.java文件
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
|
package test; import com.luogg.domain.person; 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.junit.test; import java.io.ioexception; import java.io.inputstream; import java.util.list; /** * created by luogg on 2017/2/17. */ public class testmybatis { @test public void init() throws ioexception { /** * 測(cè)試數(shù)據(jù)庫的連接 * 1.定義一個(gè)string類型的變量resource,指向剛才配置的連接數(shù)據(jù)庫的xml文件 * 2.創(chuàng)建一個(gè)輸入流,來讀取我們的數(shù)據(jù)庫配置文件 * 3.輸入流創(chuàng)建工廠. * 4.有了工廠之后open工廠 */ string resource = "sqlmapconfig.xml" ; inputstream is = resources.getresourceasstream(resource); sqlsessionfactory factory = new sqlsessionfactorybuilder().build(is); sqlsession session = factory.opensession(); } |
此時(shí),我們可以進(jìn)行單元測(cè)試了,看看session有沒有被創(chuàng)建,綠色表示創(chuàng)建成功,那么我們接下來創(chuàng)建數(shù)據(jù)庫表,并且寫sql語句
4.創(chuàng)建數(shù)據(jù)庫,并寫入數(shù)據(jù)
1
2
3
4
5
6
7
8
|
create table person( id number( 2 ), name varchar2( 20 ), sex number( 2 ), age number( 3 ) ) -- 寫入數(shù)據(jù),點(diǎn)擊下方鎖子按鈕,然后點(diǎn)擊+ select * from person for update |
5.在src底下創(chuàng)建com.luogg.domain包,在包下創(chuàng)建person.java的實(shí)體bean
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
|
package com.luogg.domain; /** * created by luogg on 2017/2/17. */ public class person { private string name; private int sex; private int age; private int id; @override public string tostring() { return "person{" + "name='" + name + '\ '' + ", sex=" + sex + ", age=" + age + ", id=" + id + '}' ; } public int getid() { return id; } public void setid( int id) { this .id = id; } public string getname() { return name; } public void setname(string name) { this .name = name; } public int getsex() { return sex; } public void setsex( int sex) { this .sex = sex; } public int getage() { return age; } public void setage( int age) { this .age = age; } } |
6.創(chuàng)建與數(shù)據(jù)庫對(duì)應(yīng)的映射文件,在src下創(chuàng)建com.luogg.mapper包下創(chuàng)建personmapper.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?xml version= "1.0" encoding= "utf-8" ?> <!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!--配置命名空間,命名空間+ .id 是唯一的sql語句標(biāo)示符--> <mapper namespace= "com.luogg.mapper.personmapper" > <!--查詢所有數(shù)據(jù),參數(shù)有id,resulttype結(jié)果集,parametertype參數(shù)--> <!--注意 : sql語句中如果有要填寫集合的,比如查詢所有數(shù)據(jù),返回一個(gè)person的結(jié)果集,那么resulttype參數(shù)直接寫 路徑+集合的類型 比如: 返回一個(gè)person集合,那么就填寫person bean所在的路徑+person--> <select id= "find" resulttype= "com.luogg.domain.person" > select * from person </select> </mapper> |
7.在核心配置文件sqlmapconfig.xml中做一個(gè)映射,讓其識(shí)別我們的寫了sql語句的配置文件
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
|
<?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> <!--配置數(shù)據(jù)源,環(huán)境--> <!--可以配置多個(gè)環(huán)境,一個(gè)測(cè)試時(shí)候用的,一個(gè)上線時(shí)候用的--> <environments default = "test" > <!--測(cè)試環(huán)境--> <environment id= "test" > <!--配置事務(wù) : jdbc事務(wù)/managed交給容器的事務(wù)--> <transactionmanager type= "jdbc" ></transactionmanager> <!--數(shù)據(jù)源 : pooled池化/unpooled非池化/jndi密碼加密,安全性高--> <datasource type= "pooled" > <property name= "driver" value= "oracle.jdbc.oracledriver" /> <property name= "url" value= "jdbc:oracle:thin:@localhost:1521:orcl" /> <property name= "username" value= "scott" /> <property name= "password" value= "luogg" /> </datasource> </environment> <!--服務(wù)器環(huán)境--> <environment id= "deploy" > <transactionmanager type= "jdbc" ></transactionmanager> <datasource type= "pooled" > <property name= "driver" value= "oracle.jdbc.oracledriver" /> <property name= "url" value= "jdbc:oracle:thin:@localhost:1521:orcl" /> <property name= "username" value= "scott" /> <property name= "password" value= "luogg" /> </datasource> </environment> </environments> <!--映射文件mapper--> <mappers> <mapper resource= "com/luogg/mapper/personmapper.xml" /> </mappers> </configuration> |
8.回到測(cè)試類testmybatis.java,訪問配置文件中的sql語句并返回結(jié)果集
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
|
package test; import com.luogg.domain.person; 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.junit.test; import java.io.ioexception; import java.io.inputstream; import java.util.list; /** * created by luogg on 2017/2/17. */ public class testmybatis { @test public void init() throws ioexception { /** * 測(cè)試數(shù)據(jù)庫的連接 * 1.定義一個(gè)string類型的變量resource,指向剛才配置的連接數(shù)據(jù)庫的xml文件 * 2.創(chuàng)建一個(gè)輸入流,來讀取我們的數(shù)據(jù)庫配置文件 * 3.輸入流創(chuàng)建工廠. * 4.有了工廠之后open工廠 * 5.通過session訪問配置文件中的sql語句 */ string resource = "sqlmapconfig.xml" ; inputstream is = resources.getresourceasstream(resource); sqlsessionfactory factory = new sqlsessionfactorybuilder().build(is); sqlsession session = factory.opensession(); //如何訪問personmapper.xml中的sql語句呢? 命名空間+ .id list<person> list = session.selectlist( "com.luogg.mapper.personmapper.find" ); system.out.println(list.size()); for (person p : list){ system.out.println(p); } } } |
運(yùn)行結(jié)果 :
以上所述是小編給大家介紹的mybatis框架入門學(xué)習(xí)教程,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!
原文鏈接:http://www.cnblogs.com/luogg/archive/2017/02/17/6410125.html