jquery操作列表
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);
}