假设环境已搭建好,sql映射已写好,现在创建dao。
1. 创建dao接口
public interface UserDao {
public User getUserById(Integer id);
}
2. 编写dao实现类
public class UserDaoImpl implements UserDao {
private SqlSessionFactory factory;
public UserDaoImpl() {}
public UserDaoImpl(SqlSessionFactory factory) {
this.factory = factory;
}
@Override
public User getUserById(Integer id) {
SqlSession session = factory.openSession();
User user = session.selectOne("test.getUserById", id);
return user;
}
}
注意这里提供了带factory参数的构造方法
因为factory最佳使用范围是整个项目,一旦创建可以重复使用。
session线程不安全,最佳使用范围是方法内部,使用完销毁。
所以从上层传入factory 在本层创建session
3. 测试程序
直接正常调用dao方法即可。
public class Demo1 {
private SqlSessionFactory factory;
@Before
public void setUp() throws IOException {
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
this.factory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void run5() {
UserDao dao = new UserDaoImpl(this.factory);
User user = dao.getUserById(4);
System.out.println(user);
}
网友评论