Mybatis(3)-编写dao实现类的方式
程序员文章站
2022-06-14 11:06:05
...
创建项目,同Mybatis(1)环境搭建,并做出更改
1.更改MybatisTest类
因为有了IUserDao的实现类故不需要代理对象了,更改后为
package com.itheima.test;
import com.itheima.dao.IUserDao;
import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
//入门案例
public class MybatisTest {
public static void main(String[] args) throws IOException {
//1.读取配置文件,连接数据库的信息
InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂,有了工厂可以生产和操作对象
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
//3.使用工厂创建dao对象
IUserDao userDao=new UserDaoImpl(factory);
//4.执行方法
List<User> users=userDao.findAll();
for (User user:users){
System.out.println(user);
}
//6.释放资源
in.close();
}
}
2.在dao包下,创建一个impl包,在impl包下,创建UserDaoImpl类
执行findAll()方法,调用session的selectList()来获取user的list,类中需要有factory来生产SqlSession
package com.itheima.dao.impl;
import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
public class UserDaoImpl implements IUserDao {
private SqlSessionFactory factory;//创建对象时,传入factory对象
public UserDaoImpl(SqlSessionFactory factory){
this.factory=factory;
}
public List<User> findAll() {
//1.使用工厂创建SqlSession对象
SqlSession session=factory.openSession();
//2.使用session执行查询所有的方法即findAll()
//selectList方法参数是statement,statement是配置信息,namespace+方法名
// 如IUserDao.xml中的配置信息,来执行select * from user;
List<User> users=session.selectList("com.itheima.dao.IUserDao.findAll");
session.close();
//3.返回查询结果
return users;
}
}
执行结果: