mybatis原始dao开发改进(dao接口和dao实现类)
2017-04-25 22:34
567 查看
思路
程序员需要写dao接口和dao实现类。需要向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession。
dao接口编写
import java.util.List; /** * * <p>Title: UserDao</p> * <p>Description: dao接口,用户管理</p> */ public interface UserDao { //根据id查询用户信息 public User findUserById(int id) throws Exception; //根据用户名列查询用户列表 public List<User> findUserByName(String name) throws Exception; //添加用户信息 public void insertUser(User user) throws Exception; //删除用户信息 public void deleteUser(int id) throws Exception; }
dao实现类
import java.util.Date; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import cn.itcast.mybatis.po.User; /** * * <p> * Title: UserDaoImpl * </p> * <p> * Description:dao接口实现类 */ public class UserDaoImpl implements UserDao { // 需要向dao实现类中注入SqlSessionFactory // 这里通过构造方法注入 private SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } @Override public User findUserById(int id) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById", id); // 释放资源 sqlSession.close(); return user; } @Override public List<User> findUserByName(String name) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> list = sqlSession.selectList("test.findUserByName", name); // 释放资源 sqlSession.close(); return list; } @Override public void insertUser(User user) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //执行插入操作 sqlSession.insert("test.insertUser", user); // 提交事务 sqlSession.commit(); // 释放资源 sqlSession.close(); } @Override public void deleteUser(int id) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //执行插入操作 sqlSession.delete("test.deleteUser", id); // 提交事务 sqlSession.commit(); // 释放资源 sqlSession.close(); } }
测试
import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import cn.itcast.mybatis.po.User; public class UserDaoImplTest { private SqlSessionFactory sqlSessionFactory; // 此方法是在执行testFindUserById之前执行 @Before public void setUp() throws Exception { // 创建sqlSessionFactory // mybatis配置文件 String resource = "SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } @Test public void testFindUserById() throws Exception { // 创建UserDao的对象 UserDao userDao = new UserDaoImpl(sqlSessionFactory); // 调用UserDao的方法 User user = userDao.findUserById(1); System.out.println(user); } }
原始dao开发问题总结
1、dao接口实现类方法中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员的工作量。2、调用sqlsession方法时将配置文件中对应的statement的id硬编码了。
3、调用sqlsession方法时传入的变量,由于sqlsession方法使用泛型,即使变量类型传入错误,在编译阶段也不报错,不利于程序员开发。
相关文章推荐
- Mybatis之原始dao开发方法(程序员需要写dao接口和dao实现类)(11)
- Mybatis学习(九)mybatis原始dao接口与dao实现的开发。
- 原始的Ibatis基于接口和实现类的开发方式——MyBatis的第一种开发方式
- Mybatis开发原始Dao(即有Dao的实现)
- mybatis原始dao开发实现用户的增删改查
- Mybatis学习(2)原始dao开发和使用mapper接口代理开发
- 2018_03_08 mybatis原始dao开发,mapper接口开发
- mybatis使用 原始dao开发 (自己写dao实现类)
- 10_Mybatis开发Dao方法——mapper代理实现
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
- Mybatis开发dao的方法--原始dao篇
- 【MyBatis学习03】原始dao开发方法及其弊端
- 【mybatis深度历险系列】深入浅出mybatis中原始dao的开发和mapper代理开发
- 【MyBatis学习03】原始dao开发方法及其弊端
- 深入浅出mybatis中原始dao的开发和mapper代理开发
- Mybatis中mapper代理方法替换原始Dao开发方法
- (四)mybatis学习之原始Dao开发方式及与spring整合
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
- 【mybatis深度历险系列】深入浅出mybatis中原始dao的开发和mapper代理开发
- mybatis入门基础(二)----原始dao的开发和mapper代理开发