MyBatis是一款一流的支持自定義SQL、存儲過程和高級映射的持久化框架。MyBatis幾乎消除了所有的JDBC代碼,也基本不需要手工去設置參數和獲取檢索結果。MyBatis能夠使用簡單的xml格式或者注解進行來配置,能夠映射基本數據元素、Map接口和POJOs(普通java對象)到數據庫中的記錄。
二、MyBatis工作流程(1)加載配置并初始化 觸發條件:加載配置文件 配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。(2)接收調用請求 觸發條件:調用Mybatis提供的API 傳入參數:為SQL的ID和傳入參數對象 處理過程:將請求傳遞給下層的請求處理層進行處理。(3)處理操作請求 觸發條件:API接口層傳遞請求過來 傳入參數:為SQL的ID和傳入參數對象 處理過程: (A)根據SQL的ID查找對應的MappedStatement對象?! ?B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。 (C)獲取數據庫連接,根據得到的最終SQL語句和執行傳入參數到數據庫執行,并得到執行結果?! ?D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,并得到最終的處理結果?! ?E)釋放連接資源。(4)返回處理結果將最終的處理結果返回。orm工具的基本思想無論是用過的hibernate,mybatis,你都可以法相他們有一個共同點:

多需要添加的驅動包:

下面進行快速入門:
目錄如下:

實體類User
package com.oumyye.model;public class User { PRivate String id; private String name; private int age; public String getId() { return id; } public void setId(String 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 + "]"; } }映射文件UserMapping.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="com.oumyye.mapping.UserMapping"> <!-- 在select標簽中編寫查詢的SQL語句, 設置select標簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復 使用parameterType屬性指明查詢時使用的參數類型,resultType屬性指明查詢返回的結果集類型 resultType="com.oumyye.model.User"就表示將查詢結果封裝成一個User類的對象返回 User類就是users表所對應的實體類 --> <!-- 根據id查詢得到一個user對象 --> <select id="getUser" parameterType="String" resultType="com.oumyye.model.User"> select * from user where id=#{id} </select></mapper>資源文件mybatis.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="root" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/oumyye/mapping/userMapping.xml"/> </mappers></configuration>
測試類:
package test;import java.io.InputStream;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Test;import com.oumyye.model.User;public class Tests {@Testpublic void test(){String resource = "mybatis.xml"; //使用類加載器加載mybatis的配置文件(它也加載關聯的映射文件) InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource); //構建sqlSession的工廠 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); /** * 映射sql的標識字符串, * com.oumyye.mapping.UserMapping是userMapper.xml文件中mapper標簽的namespace屬性的值, * getUser是select標簽的id屬性值,通過select標簽的id屬性值就可以找到要執行的SQL */ String statement = "com.oumyye.mapping.UserMapping.getUser";//映射sql的標識字符串 //執行查詢返回一個唯一user對象的sql User user = session.selectOne(statement, "1123"); System.out.println(user.toString());}}結果:

新聞熱點
疑難解答