一、MyBatis入門簡要介紹(百科) MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將介面和 Java 的POJOs(Plain ...
一、MyBatis入門簡要介紹(百科)
MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成資料庫中的記錄。
每個MyBatis應用程式主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。
用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創建的實例。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置載入資源。
二、MaBatis入門測試小項目
2.1、項目準備工作
1、因為該項目不需要與web相關,所以創建java項目即可,項目結構如下圖所示:
2、引入項目響應的jar包(兩個)
在myeclipse創建一個名為jar的Folder文件夾,下載jar包引入,不要忘記build path 將jar包引入到當前項目中來。
【mybatis】
mybatis-3.1.1.jar 下載地址(可能有變動):http://download.csdn.net/detail/dqsweet/4534353
【MYSQL驅動包】(連接mysql資料庫驅動包)
mysql-connector-java-5.1.7-bin.jar 下載地址(可能有變動):http://download.csdn.net/detail/yangs_1235/5049404
3、建立相對應的資料庫和表,使用的是MySQL資料庫
create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES('久伴1', 24); INSERT INTO users(NAME, age) VALUES('久伴2', 24);
2.2、通過MyBatis框架查詢表中的數據
1、在src目錄下創建一個conf.xml文件,文件內容如下:
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置資料庫連接信息 每個人可能不一樣--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <!-- 註冊userMapper.xml文件, userMapper.xml位於com.murong.mapping這個包下,所以resource寫成com/murong/mapping/userMapper.xml--> <mapper resource="com/murong/mapping/userMapper.xml"/> </mappers> </configuration>
2、定義實體類User,如下:
package com.murong.domain; /** * 實體類User * @author yzy * */ 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; } }
3、定義操作users表的sql映射文件userMapper.xml 創建一個com.murongl.mapping包,專門用於存放sql映射文件,在包中創建一個userMapper.xml文件 文件結構如下:
<?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"> <!-- mapper標簽需要指定一個唯一的namespace,不可重覆,namespace的值習慣上設置成包名+映射文件名 例如namespace="com.murong.mapping.userMapper" 就是com.murong.mapping(包名)+userMapper(userMapper.xml文件去除尾碼) --> <mapper namespace="com.murong.mapping.userMapper"> <!-- 在select標簽中編寫查詢的SQL語句, 設置select標簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重覆 使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型 resultType="com.murong.domain.User"表示將查詢結果封裝成一個User類的對象返回 User類就是資料庫users表所對應的實體類 --> <!-- 根據id查詢返回一個user對象 --> <select id="getUser" parameterType="int" resultType="com.murong.domain.User"> select * from users where id=#{id} </select> </mapper>
4、在conf.xml文件中註冊userMapper.xml文件
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置資料庫連接信息 每個人可能不一樣--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <!-- 註冊userMapper.xml文件, userMapper.xml位於com.murong.mapping這個包下,所以resource寫成com/murong/mapping/userMapper.xml--> <mapper resource="com/murong/mapping/userMapper.xml"/> </mappers> </configuration>
5、編寫測試代碼App類:執行定義的select語句,測試代碼如下:
package com.murong.client; import com.murong.domain.User; import java.io.IOException; import java.io.InputStream; 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; public class App { public static void main(String[] args) throws IOException { //mybatis的配置文件,位於src路徑下 String resource = "conf.xml"; //使用類載入器載入mybatis的配置文件(它也載入關聯的映射文件)(獲取方式一) //InputStream is = App.class.getClassLoader().getResourceAsStream(resource); //構建sqlSession的工廠 //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //使用MyBatis提供的Resources類載入mybatis的配置文件(它也載入關聯的映射文件)(獲取方式二) Reader reader = Resources.getResourceAsReader(resource); //構建sqlSession的工廠 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //創建能執行映射文件中sql的sqlSession SqlSession session = sessionFactory.openSession(); /** * 映射sql的標識字元串, * com.murong.mapping.userMapper是userMapper.xml文件中mapper標簽的namespace屬性的值, * getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執行的SQL */ String statement = "com.murong.mapping.userMapper.getUser";//映射sql的標識字元串 //執行查詢返回一個唯一user對象的sql User user = session.selectOne(statement, 1); System.out.println(user); } }
6、執行結果如下所示: