核心元件
SqlSessionFactoryBuilder (構造器)
根據配置資訊(eg:mybatis-config.xml)或者代碼來生成SqlSessionFactory。
SqlSessionFactory(工廠接口)
依靠工廠來生成SqlSession
SqlSession(類似于JDBC的Connection)
線程不安全
擷取映射器,讓映射器通過命名空間和方法名稱找到對應SQL,發送給 資料庫執行後傳回結果。
直接通過命名資訊去執行SQL傳回結果(iBatis版本留下的方式)
SQL Mapper(映射器)
MyBatis新元件,通常由一個Java Interface和XML檔案構成,需給出對應的SQL和映射規則。
負責發送SQL去執行,并傳回接口。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5ibyhzNzJDant2bvwVM5ADN2kjMtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
架構 搭建
-src
-java
-SQLDao
-MessageModel<POJO類>
-SQLHandle<Mapper接口>
-TestSQL<運作Test>
-resource
-message.xml<MapperXML檔案 >
-mybatis-configure.xml<配置檔案>
mybatis-configure.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>
<!-- 實體類别名,對應映射檔案中的resultType -->
<typeAliases>
<typeAlias alias="message" type="SQLDao.MessageModel"/>
</typeAliases>
<!-- 資料庫連接配接配置,配置連接配接字元串、使用者名、密碼或緩存、懶加載、語句執行逾時時間等這裡目前隻配置了基本的資料庫連接配接屬性 -->
<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/testdb" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 實體與資料庫表映射檔案位置,配置後MyBatis才會找到并加載上 -->
<mappers>
<mapper resource="message.xml" />
</mappers>
</configuration>
複制
MessageModel
package SQLDao;
public class MessageModel {
public int CarID;
public int postionX;
public int postionY;
public int speed;
public int getCarID() {
return CarID;
}
public void setCarID(int carID) {
CarID = carID;
}
public int getPostionX() {
return postionX;
}
public void setPostionX(int postionX) {
this.postionX = postionX;
}
public int getPostionY() {
return postionY;
}
public void setPostionY(int postionY) {
this.postionY = postionY;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
複制
SQLHandle
package SQLDao;
public interface SQLHandle {
public int addhistory(MessageModel model);
}
複制
TestSQL
package SQLDao;
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 java.io.IOException;
import java.io.Reader;
public class TestSQL {
/**
* SqlSessionFactory是用來建立SqlSession的工廠,SqlSession會執行映射的語句,進行事物送出、復原等。
*
* @return
*/
public static SqlSessionFactory getSqlSessionFactory() {
Reader reader = null;
SqlSessionFactory sqlSessionFactory = null;
try {
reader = Resources.getResourceAsReader("mybatis-configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
return sqlSessionFactory;
}
public static void selectUserByID() {
// 得到SqlSession執行個體,便于執行增删改查、事務送出復原等操作。
SqlSession session = getSqlSessionFactory().openSession();
MessageModel messageModel = new MessageModel();
messageModel.setCarID(1);
messageModel.setPostionX(2);
messageModel.setPostionY(3);
messageModel.setSpeed(4);
try {
SQLHandle handle=session.getMapper(SQLHandle.class);
handle.addhistory(messageModel);
} finally {
session.close();
}
}
public static void main(String[] args) {
selectUserByID();
}
}
複制