1. 程式人生 > 實用技巧 >jquery操作列表

jquery操作列表

技術標籤:mybatismybatis

MyBatis入門(一)

最近學習了MyBatis,在這裡總結一下它的內容,如有錯誤的地方,歡迎更正!

MyBatis 是一款優秀的持久層框架,它支援自定義 SQL、儲存過程以及高階對映。MyBatis 免除了幾乎所有的 JDBC 程式碼以及設定引數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和對映原始型別、介面和 Java POJO(Plain Old Java Objects,普通老式 Java 物件)為資料庫中的記錄。相對Hibernate和Apache OJB等“一站式”ORM解決方案而言,Mybatis 是一種“半自動化”的ORM實現。

使用mybatis的步驟:
1.匯入依賴

依賴的下載地址

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>

2.從XML中構建SqlSessionFactory

//mybatisConfig.xml是全域性配置檔案
String resource = "mybatisConfig.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

使用Resources工具類來獲取配置檔案的輸入流,載入類路徑下的XML配置檔案,這裡的XML配置檔案是mybatis的全域性配置檔案,每個基於Mybatis的應用程式都是以一個sqlSessionFactory例項為核心的,sqlSessionFactoryBuilder在mybatis的全域性配置檔案中獲得sqlSessionFactory例項。

sqlSessionFactoryBuilder例項的最佳作用域是方法作用域,SqlSessionFactory一旦被建立,就不再需要sqlSessionFactoryBuilder了。

sqlSessionFactory例項的最佳作用域是應用作用域(使用(靜態)單例模式來實現),是執行緒安全的,一旦被建立,在應用執行期間都存在,所以在應用執行期間不要重複建立多次,多次重建 SqlSessionFactory 被視為一種程式碼“壞習慣”。

3.從SqlSessionFactory中構建sqlSession

SqlSession sqlSession=null;
try{
	sqlSession=sqlSessionFactory.openSession();
	UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
	User user=new User(null,"aaaaaa",'n');
	userMapper.addUser(user);
	sqlSession.commit();
}catch(Exceptione){
	e.printStackTrace();
}finally{
	if(sqlSession!=null){
		sqlSession.close();
	}
}

從SqlSessionFactory中構建sqlSession,通過sqlSession例項來直接執行已對映的sql語句(通過這個例項對資料庫進行操作)。

sqlSession使用完之後要及時關閉,因為每次對資料庫進行操作都會建立sqlSession例項,sqlSession是執行緒不安全的,所以這些sqlSession之間不能進行共享,在操作完成之後要在finally塊中關閉sqlSession。

關於對映器,對映器是一些繫結對映語句的介面,對映器例項的最合適的作用域是方法作用域,也就是說,對映器例項應該在呼叫它們的方法中被獲取,使用完畢之後即可丟棄。

4.探究已經對映的sql語句

<mapper namespace="com.inter.UserMapper">
	<insert id="insert">
		insert into user values(id=#{id},name=#{name},sex=#{sex})
	</insert>
</mapper>

在XML對映檔案中,名稱空間要和對應介面的全類名保持一致(實際上XML對映檔案就相當於是介面的實現類)。

在XML對映檔案中定義對映語句,對映語句中的id屬性要和介面中對應的方法名保持一致。

如果沒有XML對映檔案,那麼就要通過註解的方式來對映sql語句

public interface UserMapper{
	@Insert("insertintouservalues(id=#{id},name=#{name},sex=#{sex})")
    public void insert(int id,String name,char sex);
}