java-mybaits-00202-DAO-原始DAO開發方法
阿新 • • 發佈:2017-05-07
click ring res ide print dao spa 變量 source 原始Dao開發方法需要程序員編寫Dao接口和Dao實現類。
原本的ibatis的
需要在dao實現類中註入一個SqlSessionFactory工廠。
1.思路
程序員需要寫dao接口和dao實現類。 需要向dao實現類中註入SqlSessionFactory,在方法體內通過SqlSessionFactory創建SqlSession2 映射文件
使用上一節3、Dao編寫
public interface UserDao { // 一般會把異常拋出 public User getUserById(int id) throws Exception;public void insertUser(User user) throws Exception; }
實現類
package com.lhx.mybatis.olddaomybatis; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import com.lhx.mybatis.po.User; public class UserDaoImpl implements UserDao { privateView CodeSqlSessionFactory sqlSessionFactory; public SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } //註入SqlSessionFactorypublic UserDaoImpl(SqlSessionFactory sqlSessionFactory){ this.setSqlSessionFactory(sqlSessionFactory); } public void insertUser(User user) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); try { sqlSession.insert("test.insertUser", user); sqlSession.commit(); } finally{ sqlSession.close(); } } public User getUserById(int id) throws Exception { SqlSession session = sqlSessionFactory.openSession(); User user = null; try { //通過sqlsession調用selectOne方法獲取一條結果集 //參數1:指定定義的statement的id,參數2:指定向statement中傳遞的參數 user = session.selectOne("test.findUserById", 1); System.out.println(user); } finally{ session.close(); } return user; } }
測試代碼
public class TestDao { // 會話工廠 private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { // 配置文件 String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); // 使用SqlSessionFactoryBuilder從xml配置文件中創建SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindUserById() throws Exception { UserDao userDao = new UserDaoImpl(sqlSessionFactory); User user = userDao.getUserById(1); System.out.println(user); } }View Code
4 總結原始 dao開發問題
1、dao接口實現類方法中存在大量模板方法,設想能否將這些代碼提取出來,大大減輕程序員的工作量。 2、調用sqlsession方法時將statement的id硬編碼了 3、調用sqlsession方法時傳入的變量,由於sqlsession方法使用泛型,即使變量類型傳入錯誤,在編譯階段也不報錯,不利於程序員開發。
java-mybaits-00202-DAO-原始DAO開發方法