[JAVA]Mybatis-Mapper动态代理

  1. 1,新建一个工具类MyBatisUtils.java用于获取sqlSessionFactory对象
  2. 2,删除StudentDaoImpl的接口实现类。
  3. 3,修改测试类
  4. 注意

基于[[Mybatis增删改查]]这篇文章基础上进行更改,详细步骤请先了解后在看本文。

1,新建一个工具类MyBatisUtils.java用于获取sqlSessionFactory对象

package xyz.xioaxin12.utils;
/**
 * @author 小信
 */
public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    public static SqlSession getSqlsession(){
        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
            if(sqlSessionFactory == null){
                sqlSessionFactory =  new SqlSessionFactoryBuilder().build(inputStream);
            }
            return sqlSessionFactory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }
}

 

2,删除StudentDaoImpl的接口实现类。

 

3,修改测试类

package xyz.xioaxin12.test;

/**
 * @author 小信
 */
public class TestMybatis {
    private static StudentDao dao;

    private static SqlSession sqlSession;
    static{
        //获取配置接口
        sqlSession = MyBatisUtils.getSqlsession();
        dao = sqlSession.getMapper(StudentDao.class);
    }
    public static void main(String[] args) {
        //增
        addStu();
        //删
//        deleteStu();
        //改
//        updateStu();
        //查
//       selectStu();
    }
    public static void addStu(){
        Student student = new Student("小信",19);
        dao.insertStudent(student);
        sqlSession.commit();
        closeSqlsession();
    }

    public static void deleteStu(){
        dao.deleteStudent(1);
        sqlSession.commit();
        closeSqlsession();
    }

    public static void updateStu(){
        Student student = new Student("阿六",20);
        student.setId(2);
        dao.updateStudent(student);
        sqlSession.commit();
        closeSqlsession();
    }

    public static void selectStu(){
        List<Student> students = dao.selectStudent();
        for (Student student: students) {
            System.out.println(student.getId()+"-"+student.getName()+"-"+student.getAge());
        }
        closeSqlsession();

    }

    /**
     * 关闭资源
     */
    public static void closeSqlsession(){
        if(sqlSession!=null){
            sqlSession.close();
        }
    }
}

 

 

注意

  • mapper映射文件namespace为接口的全类名;
  • 接口中的每个方法名分别与mapper映射文件每个处理数据的id一致。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xiaoxin1218@qq.com

文章标题:[JAVA]Mybatis-Mapper动态代理

文章字数:281

本文作者:周信

发布时间:2019-10-21, 18:54:33

最后更新:2023-05-03, 10:25:35

原始链接:http://zx21.xyz/2019/10/21/JAVA-Mybatis-Mapper动态代理/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

可为我打赏鼓励~