mybatis黑马:不采用动态代理接口,采用SqlSession对象的实现类

将第四步换成右边的方式,
在这里插入图片描述
仍然采用XML映射配置方式,只要编写UserDaoImpl实现类来实现IUserDao接口,不再使用动态代理模式增强接口

核心代码原理如下:(原3.4步改为右图代码所示)
在这里插入图片描述
UserDaoImpl实现类

package com.jh.dao.impl;
import com.jh.dao.IUserDao;
import com.jh.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;
    
    public  UserDaoImpl(SqlSessionFactory factory){
        this.factory=factory;
    }
    public List<User> findAll(){
        //1.使用工厂创建SqlSession对象
        SqlSession session = factory.openSession();
        //2.使用session执行查询所有方法
        List<User> users = session.selectList("com.jh.dao.IUserDao.findAll");
        session.close();
        //3.返回查询结果集
        return users;
    }
}

测试类MybatisTest

package com.jh.test;
import com.jh.dao.IUserDao;
import com.jh.dao.impl.UserDaoImpl;
import com.jh.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.InputStream;
import java.util.List;
/**
 * @author 黑马程序员
 * @Company http://www.ithiema.com
 * mybatis的入门案例
 */
public class MybatisTest {
    public static void main(String[] args)throws Exception {
        //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);
        }
        //5.释放资源
        in.close();
    }
}
发布了88 篇原创文章 · 获赞 14 · 访问量 4897

猜你喜欢

转载自blog.csdn.net/JH39456194/article/details/104349439