(1)編寫SqlMapConfig.xml文件
(2)編寫mapper.xml;
(3)通過配置文件,編程創建SqlSessionFactory;
(4)通過SqlSessionFactory獲取SqlSession
(5)通過SqlSession操作數據庫,如執行添加,更新,刪除,需要調用SqlSession.Commit();
(6)SqlSession使用完後進行關閉。
例如:向用戶表插入一條記錄。
User.xml文件如下:
<insert id="insertUser" parameterType="cn.xd.mybatis.po.User">
INSERT INTO USER(username,birthday,sex,address)
VALUES(#{username},#{birthday},#{sex},#{address})
</insert>
創建會話工廠:SqlSessionFactory
//會話工廠
private SqlSessionFactory sqlSessionFactory ;
//創建工廠
@Before
public void init throws IoException{
//配置文件
String resource="SqlMapConfig.xml";
//加載而配置文件到輸入流
InputStream inputStream=Resources.getResourceAsStream(resource);
//創建會話工廠
sqlSessionFactory=new SqlSessionFactoryBulider().build(inputStream);
}
通過SqlSessionFactory獲取SqlSession,,並操作數據庫:
public void testInsertUser(){
//通過SqlSessionFactory創建SqlSession
SqlSession sqlSession=SqlSessionFactory.openSession();
//通過SqlSession操作數據庫,首先創建一個插入的數據對象
User user=new User();
user.setUser("小明");
user.setAddress("北京");
user.setBirthday(new Date());
user.setSext("1");
try{
sqlSession.insert("test.insertUser",user)
//需要提交的事務
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
}
Mybatis解決jdbc編程的問題:
1、數據庫鏈接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫鏈接池可解決此問題。
解決:在SqlMapConfig.xml中配置數據鏈接池,使用連接池管理數據庫鏈接。
2、Sql語句寫在代碼中造成代碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java代碼。
解決:將Sql語句配置在XXXXmapper.xml文件中與java代碼分離。
3、向sql語句傳參數麻煩,因爲sql語句的where條件不一定,可能多也可能少,佔位符需要和參數一一對應。
解決:Mybatis自動將java對象映射至sql語句,通過statement中的parameterType定義輸入參數的類型。
4、對結果集解析麻煩,sql變化導致解析代碼變化,且解析前需要遍歷,如果能將數據庫記錄封裝成pojo對象解析比較方便。
解決:Mybatis自動將sql執行結果映射至java對象,通過statement中的resultType定義輸出結果的類型。
mybatis與hibernate重要區別
企業開發進行技術選型 ,考慮mybatis與hibernate適用場景。
mybatis:入門簡單,程序容易上手開發,節省開發成本 。mybatis需要程序員自己編寫sql語句,是一個不完全 的ORM框架,對sql修改和優化非常容易實現 。
mybatis適合開發需求變更頻繁的系統,比如:互聯網項目。
hibernate:入門門檻高,如果用hibernate寫出高性能的程序不容易實現。hibernate不用寫sql語句,是一個 ORM框架。
hibernate適合需求固定,對象數據模型穩定,中小型項目,比如:企業OA系統。
總之,企業在技術選型時根據項目實際情況,以降低成本和提高系統 可維護性爲出發點進行技術選型。