MyBatis开发Dao有两种方式 传统dao开发的形式 使用接口代理开发的方式
下面稍微介绍一下传统dao的开发方式
所以这里我们不仅给出了dao接口 并且给出了其实现类 所以我们创建了一个userdaoimpl实现类 去实现iuserdao接口
这里仅仅示范其中的一个方法 不做详细的解释
public class UserDaoImpl implements IUserDao{
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
this.sqlSessionFactory = sqlSessionFactory;
}
//我们仅仅实现了这个方法 鸡查询所有的方法
public List<User> findAll() {
SqlSession session = sqlSessionFactory.openSession();
List<User> users = session.selectList("com.itheima.dao.IUserDao.findAll");
session.close();
return users;
}
public void saveUser(User user) {
}
public void updateUser(User user) {
}
public void deleteUser(Integer id) {
}
public User findById(Integer id) {
return null;
}
public List<User> findByName(String username) {
return null;
}
public int findTotal() {
return 0;
}
public List<User> findUserByVo(QueryVo vo) {
return null;
}
public List<User> findUserByCondition(User user) {
return null;
}
public List<User> findUserByIds(QueryVo vo) {
return null;
}
}
映射配置类一样
最后书写测试类 这里也仅仅示范一个测试类 其余差不多
public class MyBatisTest2{
private InputStream in;
private SqlSessionFactory sqlSessionFactory;
private IUserDao userDao;
@Test
public void test() throws IOException {
in = Resources.getResourceAsStream("SqlMapConfig.xml");//读取配置文件 返回一个输入流
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);//使用构建者设计模式去创建工厂
userDao = new UserDaoImpl(sqlSessionFactory);//传入工厂去生产一个具体的dao对象
List<User> users = userDao.findAll();//因为这里我们有直接的实现方式 所以根本不需要用代理者模式 所以直接使用对象调用相应的方法即可
for(User user : users){//遍历结果 进行输出
System.out.println(user);
}
}
}
最后的测试结果:
User{userId=41, userName='老王', userSex='男', userBirthday=Tue Feb 27 17:47:08 CST 2018, userAddress='北京'}
User{userId=43, userName='小王', userSex='女', userBirthday=Sun Mar 04 11:34:34 CST 2018, userAddress='深圳'}
User{userId=45, userName='二王', userSex='男', userBirthday=Sun Mar 04 12:04:06 CST 2018, userAddress='南京'}
User{userId=46, userName='王二麻子', userSex='男', userBirthday=Wed Mar 07 17:37:26 CST 2018, userAddress='天津'}