mybatis_mapper动态代理

Posted 一头牛这么多人放

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis_mapper动态代理相关的知识,希望对你有一定的参考价值。

mapper的的动态代理

抛开接口的实现类,直接通过dao接口来定位到mappper中的SQL语句

1:修改StudentMapper.xml文件中的mapper标签的namespace属性

(mybatis会将当前的mapper.xml文件与StudentDao对应上)

<mapper namespace="com.doaoao.dao.StudentDao"

2:需要将StudentDao接口中的方法名要与 StudentMapper.xml 文件中的id名称对应上

// 接口
public interface StudentDao {
    void insertStudent(Student student);
    void deleteStudent(int id);
    void updateStudent(Student student);
    List<Student> selectAllStudents();
    Student selectStudentById(int id);
    Student selectStudentByAddress(int id);
}

// id名称
    <insert id="insertStudent" parameterType="com.doaoao.bean.Student">    ...      </insert>
<delete id="deleteStudent">    ... </delete>
<update id="updateStudent">    ... </update> <select id="selectAllStudents" resultType="student">    ... </select>
<select id="selectStudentById" resultType="student">    ... </select>

 3:不需要实现类,但在测试类中还是得获取SqlSession对象

// 执行测试方法之前会执行该方法
    @Before
    public void init(){
        sqlSession = MyBatisUtil.getSqlSession();
        studentDao = sqlSession.getMapper(StudentDao.class);  // 通过该方法可以获取StudentDao对象
    }

    // 方法执行完成后需要关闭sqlSession
    @After
    public void closeSession(){
        if(sqlSession != null){
            sqlSession.close();
        }
    }
  // 下面代码省略,与之前相同

注:将dao的实现类删除之后,mybatis底层只会调用selectOne()或selectList()方法。而框架选择方法的标准是dao层方法中用于接收返回值的对象类型。若接收类型为 List,则自动选择 selectList()方法;否则,自动选择 selectOne()方法。

 

 

 

本笔记参考自:小猴子老师教程 http://www.monkey1024.com

以上是关于mybatis_mapper动态代理的主要内容,如果未能解决你的问题,请参考以下文章

JAVA之AOP

动态 Rstudio 代码片段

是否可以动态编译和执行 C# 代码片段?

支持动态或静态片段的不同屏幕尺寸?

Forge Viewer - 如何在场景中访问(或获取渲染/片段代理)克隆的网格?

在ansible模板中使用动态组名称