Dao开发
为什么要用Dao开发
一般的程序结构:Action service dao 数据库
采用这样的程序结构可以减少重复的代码,符合程序的结构化和层次化
开发思路:
- 创建Dao接口(UserDao)
- 创建Dao实现类(UserDaoImpl)
- 创建测试类(DaoTest)并调用操作方法
前言:
User实体类,User.xml和SqlMapConfig.xml在mybatis入门中已经书写了,在这里就不再重复描述。
- 用SqlSessionFactroyBuilder创建SqlSessionFactory
- 用SqlSessionFactory的openSession重载方法创建SqlSession,通常用单例管理SqlSessionFactory
- 用SqlSession接口操作数据库,完成对数据库的增删改查等操作
创建Dao接口(UserDao):
代码:
public interface UserDao {
public User findUserById(Integer id);
public List<User> findUserByName(String name);
}
创建实现类(UserDaoImpl)
前言:
- 继承UserDao接口
- 创建工厂对象用于接收测试类传过来的工厂对象
- 创建会话对象
- 执行数据库操作语句
- 提交数据库操作(查询语句可以不提交)
- 关闭连接
- 返回结果
代码:
public class UserDaoImpl implements UserDao {
/*创建工厂对象*/
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
super();
/*赋值给类中的同名属性*/
this.sqlSessionFactory = sqlSessionFactory;
}
public User findUserById(Integer id) {
/*用工厂对象创建会话对象*/
SqlSession sqlSession = this.sqlSessionFactory.openSession();
/*用会话对象执行数据库操作*/
User user = sqlSession.selectOne("test.findUserById",id);
/*提交操作*/
sqlSession.commit();
/*关毕连接*/
sqlSession.close();
/*返回结果*/
return user;
}
public List<User> findUserByName(String name) {
/*用工厂对象创建会话对象*/
SqlSession sqlSession = sqlSessionFactory.openSession();
/*用会话对象执行数据库操作*/
List<User> list = sqlSession.<