一、历史回顾
(一)、上节课总结的注意事项
1、如果使用的事务方式为JDBC,则需要手工commit提交,即session.commit();
2、所有的标签<select>、<update>等,都必须有SQL语句,但是SQL参数值可选。带条件的就需要第二个参数。
二、Mybatis约定以及基于动态代理方式的CRUD
(一)、mapper动态代理方式的CRUD(Mybatis接口开发)
1、原则:约定优于配置(maven讲过这些,请自己回顾)
2、具体实现步骤:
(1)、在上节课的CRUD例子的基础上
(2)、不同之处:
约定的目标:省略掉statement,即根据约定直接可以定位出SQL语句。
接口遵循的规则:
* 1、方法名和mapper.xml文件中标签的id值相同
* 2、方法的输入参数和mapper.xml文件中标签的parameterType类型一致。(如果没有parameterType,则没有方法参数)
* 3、方法的返回值 和 mapper.xml的resultType类型一致。(如果没有resultType,则没有方法返回值为void)
注意:除了以上约定,要是实现接口中的方法和xxxMapper.xml中的SQL标签一一对应,还需要以下两点:
匹配的过程:(约定的过程)
(a)、根据接口名找到mapper.xml文件(根据的是namespace=接口全类型)
(b)、根据接口的方法名找到mapper.xml文件中的SQL标签(方法名=SQL标签Id值)
以上两点可以保证:当我们调用接口中的方法,程序能自动定位到某一个mapper.xml中的SQL标签。
总结:以上可以通过接口的方法 ---> SQL语句。执行:
PersonMapper personMapper = (PersonMapper) sqlSession.getMapper(PersonMapper.class);
personMapper .方法();
通过session对象获取接口(sqlSession.getMapper(接口.class)),在调用该接口中的方法,程序会自动执行该方法对应的SQL。
例:
新增PersonMapper.java接口:并且将接口和xxxMapper.xml文件放在一个文件夹,并修改xxxMapper.xml和conf.xml对于xxxMapper.xml的配置路径。

新建testInterfaceClient测试类:



网友评论