首页 > 代码库 > java-mybaits-00202-DAO-原始DAO开发方法

java-mybaits-00202-DAO-原始DAO开发方法

原始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开发方法