1. 程式人生 > >java-mybaits-00202-DAO-原始DAO開發方法

java-mybaits-00202-DAO-原始DAO開發方法

click ring res ide print dao spa 變量 source

原始Dao開發方法需要程序員編寫Dao接口和Dao實現類。 原本的ibatis的 需要在dao實現類中註入一個SqlSessionFactory工廠。

1.思路

程序員需要寫dao接口和dao實現類。 需要向dao實現類中註入SqlSessionFactory,在方法體內通過SqlSessionFactory創建SqlSession

2 映射文件

使用上一節

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 {

    private
SqlSessionFactory sqlSessionFactory; public SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } //註入SqlSessionFactory
public 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; } }
View Code

測試代碼

技術分享
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開發方法