Mybatis的配置及簡單使用
阿新 • • 發佈:2019-02-01
開發工具 eclipse javaweb專案
準備工作:jar包和jdbc的連線jar包
mybatis-3.4.5.jar 最新下載地址:https://github.com/mybatis/mybatis-3/releases
mysql-connector-java-5.0.8-bean.jar
資料庫自行備好
在src下建一個xml檔案:mybatisconfig.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"/>
<!-- POOLED– 這種資料來源的實現利用“池”的概念將 JDBC 連線物件組織起來,避免了建立新的連線例項時所必需的初始化和認證時間。
這是一種使得併發 Web 應用快速響應請求的流行處理方式。
driver – 這是 JDBC 驅動的 Java 類的完全限定名(並不是JDBC驅動中可能包含的資料來源類)。
url – 這是資料庫的 JDBC URL 地址。
username – 登入資料庫的使用者名稱。
password – 登入資料庫的密碼。
defaultTransactionIsolationLevel – 預設的連線事務隔離級別。
poolMaximumActiveConnections – 在任意時間可以存在的活動(也就是正在使用)連線數量,預設值:10
poolMaximumIdleConnections – 任意時間可能存在的空閒連線數。
poolMaximumCheckoutTime – 在被強制返回之前,池中連線被檢出(checked out)時間,預設值:20000 毫秒(即 20 秒)
poolTimeToWait – 這是一個底層設定,如果獲取連線花費的相當長的時間,它會給連線池列印狀態日誌並重新嘗試獲取一個連線(避免在誤配置的情況下一直安靜的失敗),預設值:20000 毫秒(即 20 秒)。
poolMaximumLocalBadConnectionTolerance – 這是一個關於壞連線容忍度的底層設定, 作用於每一個嘗試從快取池獲取連線的執行緒.
如果這個執行緒獲取到的是一個壞的連線,那麼這個資料來源允許這 個執行緒嘗試重新獲取一個新的連線,
但是這個重新嘗試的次數不應該超過 poolMaximumIdleConnections 與 poolMaximumLocalBadConnectionTolerance 之和。 預設值:3 (Since: 3.4.5)
poolPingQuery – 傳送到資料庫的偵測查詢,用來檢驗連線是否處在正常工作秩序中並準備接受請求。預設是“NO PING QUERY SET”,這會導致多數資料庫驅動失敗時帶有一個恰當的錯誤訊息。
poolPingEnabled – 是否啟用偵測查詢。若開啟,也必須使用一個可執行的 SQL 語句設定 poolPingQuery 屬性(最好是一個非常快的 SQL),預設值:false。
poolPingConnectionsNotUsedFor – 配置 poolPingQuery 的使用頻度。
這可以被設定成匹配具體的資料庫連線超時時間,來避免不必要的偵測,預設值:0(即所有連線每一時刻都被偵測 — 當然僅當 poolPingEnabled 為 true 時適用)。 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:5851/db1"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource >
</environment>
</environments>
<mappers>
<!-- 註冊userMapper.xml檔案,對映檔案是關聯bean類
-->
<mapper resource="com/great/mapping/usermapping.xml"/>
</mappers>
</configuration>
建立一個bean類,保持和資料庫對應,比如我的
package bean;
public class Student {
private int studentid;
private String studentname;
public int getStudentid() {
return studentid;
}
public void setStudentid(int studentid) {
this.studentid = studentid;
}
public String getStudentname() {
return studentname;
}
public void setStudentname(String studentname) {
this.studentname = studentname;
}
@Override
public String toString() {
return "Student [studentid=" + studentid + ", studentname=" + studentname + "]";
}
}
接下來就可以書寫mapping檔案
<?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.great.mapping.usermapping" >
<!-- 在select標籤中編寫查詢的SQL語句, 設定select標籤的id屬性為getUser,id屬性值必須是唯一的,不能夠重複
使用parameterType屬性指明查詢時使用的引數型別,resultType屬性指明查詢返回的結果集型別
resultType="me.gacl.domain.User"就表示將查詢結果封裝成一個User類的物件返回
User類就是users表所對應的實體類
-->
<select id="getUser" parameterType="int"
resultType="bean.Student">
select * from student where studentid=#{id}
</select>
</mapper>
然後將此mapping檔案寫入配置檔案中,
測試:
package test;
import java.io.IOException;
import java.io.InputStream;
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 bean.Student;
public class TestMybatis {
public static void main(String[] args) {
// TODO Auto-generated method stub
String resource = "mybatisconfig.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
Student student = session.selectOne("com.great.mapping.usermapping.getUser",1);
System.out.println(student.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如何編寫xml 配置檔案和mapping檔案提示
下載兩個dtd檔案,然後:
把檔案匯入後就可以使用了提示了