MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源于“internet”和“abatis”的組合,是一個基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)
首先給大家介紹MyBatis的含義
MyBatis是一個支持普通sql查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及對結(jié)果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。
二、mybatis快速入門
2.1、準備開發(fā)環(huán)境
1、創(chuàng)建測試項目,普通java項目或者是JavaWeb項目均可,如下圖所示:
2、添加相應的jar包
【mybatis】
mybatis-3.1.1.jar
【MYSQL驅(qū)動包】
mysql-connector-java-5.1.7-bin.jar
3、創(chuàng)建數(shù)據(jù)庫和表,針對MySQL數(shù)據(jù)庫
SQL腳本如下:
1
2
3
4
5
|
create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (), age INT ); INSERT INTO users( NAME , age) VALUES ( '孤傲蒼狼' , ); INSERT INTO users( NAME , age) VALUES ( '白虎神皇' , ); |
將SQL腳本在MySQL數(shù)據(jù)庫中執(zhí)行,完成創(chuàng)建數(shù)據(jù)庫和表的操作,如下:
到此,前期的開發(fā)環(huán)境準備工作全部完成。
2.2、使用MyBatis查詢表中的數(shù)據(jù)
1、添加Mybatis的配置文件conf.xml
在src目錄下創(chuàng)建一個conf.xml文件,如下圖所示:
conf.xml文件中的內(nèi)容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?xml version= "." encoding= "UTF-" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd" > <configuration> <environments default = "development" > <environment id= "development" > <transactionManager type= "JDBC" /> <!-- 配置數(shù)據(jù)庫連接信息 --> <dataSource type= "POOLED" > <property name= "driver" value= "com.mysql.jdbc.Driver" /> <property name= "url" value= "jdbc:mysql://localhost:/mybatis" /> <property name= "username" value= "root" /> <property name= "password" value= "XDP" /> </dataSource> </environment> </environments> </configuration> |
2、定義表所對應的實體類,如下圖所示:
User類的代碼如下:
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
|
package me.gacl.domain; /** * @author gacl * users表所對應的實體類 */ public class User { //實體類的屬性和表的字段名稱一一對應 private int id; private String name; private int age; 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 getAge() { return age; } public void setAge( int age) { this .age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]" ; } } |
3、定義操作users表的sql映射文件userMapper.xml
創(chuàng)建一個me.gacl.mapping包,專門用于存放sql映射文件,在包中創(chuàng)建一個userMapper.xml文件,如下圖所示:
userMapper.xml文件的內(nèi)容如下:
<?xml version="." encoding="UTF-" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper .//EN" "http://mybatis.org/dtd/mybatis--mapper.dtd">
<!-- 為這個mapper指定一個唯一的namespace,namespace的值習慣上設置成包名+sql映射文件名,這樣就能夠保證namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后綴)
-->
<mapper namespace="me.gacl.mapping.userMapper">
<!-- 在select標簽中編寫查詢的SQL語句, 設置select標簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復
使用parameterType屬性指明查詢時使用的參數(shù)類型,resultType屬性指明查詢返回的結(jié)果集類型
resultType="me.gacl.domain.User"就表示將查詢結(jié)果封裝成一個User類的對象返回
User類就是users表所對應的實體類
-->
<!--
根據(jù)id查詢得到一個user對象
-->
1
2
3
4
5
|
< select id= "getUser" parameterType= "int" resultType= "me.gacl.domain.User" > select * from users where id=#{id} </ select > </mapper> |
4、在conf.xml文件中注冊userMapper.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?xml version= "." encoding= "UTF-" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config .//EN" "http://mybatis.org/dtd/mybatis--config.dtd" > <configuration> <environments default = "development" > <environment id= "development" > <transactionManager type= "JDBC" /> <!-- 配置數(shù)據(jù)庫連接信息 --> <dataSource type= "POOLED" > <property name= "driver" value= "com.mysql.jdbc.Driver" /> <property name= "url" value= "jdbc:mysql://localhost:/mybatis" /> <property name= "username" value= "root" /> <property name= "password" value= "XDP" /> </dataSource> </environment> </environments> <mappers> <!-- 注冊userMapper.xml文件, userMapper.xml位于me.gacl.mapping這個包下,所以resource寫成me/gacl/mapping/userMapper.xml--> <mapper resource= "me/gacl/mapping/userMapper.xml" /> </mappers> </configuration> |
5、編寫測試代碼:執(zhí)行定義的select語句
創(chuàng)建一個Test1類,編寫如下的測試代碼:
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
|
package me.gacl.test; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import me.gacl.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class Test { public static void main(String[] args) throws IOException { //mybatis的配置文件 String resource = "conf.xml" ; //使用類加載器加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件) InputStream is = Test. class .getClassLoader().getResourceAsStream(resource); //構(gòu)建sqlSession的工廠 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件) //Reader reader = Resources.getResourceAsReader(resource); //構(gòu)建sqlSession的工廠 //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //創(chuàng)建能執(zhí)行映射文件中sql的sqlSession SqlSession session = sessionFactory.openSession(); /** * 映射sql的標識字符串, * me.gacl.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, * getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執(zhí)行的SQL */ String statement = "me.gacl.mapping.userMapper.getUser" ; //映射sql的標識字符串 //執(zhí)行查詢返回一個唯一user對象的sql User user = session.selectOne(statement, ); System.out.println(user); } } |
執(zhí)行結(jié)果如下:
有上圖可以看出,數(shù)據(jù)庫中記錄已經(jīng)成功查詢出來。
以上就是本文針對MyBatis入門學習教程(一)-MyBatis快速入門的全部內(nèi)容,希望對大家有所幫助。