Mybatis框架学习——03手动编写Dao的实现类
Mybatis03
手动编写Dao的实现类
开发过程中不推荐手动的实现dao接口的实现类
1.配置部分
配置文件和映射的配置不需要改变
2.编写dao的实现类
mybatis框架的session对象提供了一些执行查询的方法,所以dao的实现构建需要传入factory用于获取session对象
package com.yang.dao.impl; import com.yang.beans.User; import com.yang.dao.UserDao; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import java.util.List; public class UserDaoImpl implements UserDao { private SqlSessionFactory factory; //带SqlSessionFactory 参数的构造函数 public UserDaoImpl(SqlSessionFactory factory){ this.factory=factory; } public List<User> foundAllUsers() { //通过factory获取session对象 SqlSession session = factory.openSession(); //通过session调用方法执行查询 //需要通过配置文件读取sql语句 定位是通过配置文件中的 namespace 属性和id组合在一起共同定位到具体dao的某个方法 List<User> users = session.selectList("com.yang.dao.UserDao.foundAllUsers"); session.close(); return users; } }
session.selectList("com.yang.dao.UserDao.foundAllUsers"); //其中的参数是配置文件xml中的值 更具属性namespace和id的值来匹配
<mapper namespace="com.yang.dao.UserDao" > <select id="foundAllUsers" resultType="com.yang.beans.User"> Select * from user </select> </mapper>
3.测试
import com.yang.beans.User; import com.yang.dao.UserDao; import com.yang.dao.impl.UserDaoImpl; 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 org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class test01 { @Test /** * 手动实现dao的实现类测试 */ public void first() { //1.读取配置文件 InputStream in= null; try { in = Resources.getResourceAsStream("SqlMapConfig.xml"); } catch (IOException e) { e.printStackTrace(); } //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder(); SqlSessionFactory factory=builder.build(in); //3.使用工厂生产SqlSession对象 SqlSession session = factory.openSession(); // System.out.println(session); //4.创建dao的实现类 UserDao userDao=new UserDaoImpl(factory); //5.通过对象调用方法 // System.out.println(userDao); List<User> users = userDao.foundAllUsers(); for (User user: users ) { System.out.println(user); } //6.释放资源 try { in.close(); } catch (IOException e) { e.printStackTrace(); } } }
4.结果

2019-09-07

浙公网安备 33010602011771号