Mybatis入门(三)基于动态代理方式的CRUD

mybatis动态代理方式的约定:不需要写statement,通过接口和接口中的方法定位出sql语句

3.1 创建一个接口
package one;
/* 3 Mybatis约定及基于动态代理方式的增删改查
*    如果使用的事务处理方式为jdbc,则手动commit提交   session.commit()
*    Mapper动态代理方式的CRUD(Mybatis接口开发)
*    原则:约定优于配置     省略了statement
*  */

//操作mybatis的接口,接口的名字需要与mapper.xml文件的名字一样,这样可以帮助找到mapper文件
/*匹配的过程:(约定的过程)
* 1.根据接口名找到mapper.xml文件(mapper.xml中的namespace=接口全类名)
* 2.根据方法名找到mapper文件的sql标签(方法名=sql标签id值)
* 习惯:SQL映射文件(mapper.xml)和接口放在一个包里
* */
public interface StudentMapper {
    //方法名和mapper.xml文件里标签的id值一样,方法里面的输入参数和mapper里面的parameterType一致
    //方法的返回值和mapper里面的resultType一致
    //比如要查询一个学生的信息,用StudentMapper.xml文件里的SelectOneStudent这个select的id
    Student selectOneStudent(int id);
}

此接口中的方法还是上一节普通statement方式CRUD中的方法,这一节利用mybatis接口开发来实现(又叫动态代理方式的CRUD)
此时对应的mapper文件的namespace应该写成接口的全类名

3.2 java方法
public static void selectOneStudent()throws IOException {
    Reader reader = Resources.getResourceAsReader("conf.xml");
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    SqlSession session = sessionFactory.openSession();

    //通过session的getMapper方法找到对应接口
    //getMapper里面放的是类,返回值是泛型,因为studentMapper是接口,所以后面要加上".class"
    //返回值与输入的类相同类型,所以返回值也是studentMapper类型的
    StudentMapper studentMapper=session.getMapper(StudentMapper.class);
    Student student=studentMapper.selectOneStudent(3);//调用接口中的方法
    System.out.println(student);
    session.close();
}

可以看出代码和上一个方式中的几乎没变,差别就在把statement删掉了,取而代之的是用getMapper方法来找到对应的接口,然后再调用接口中的方法找到mapper文件中的sql语句

如果接口中的方法可以成功与mapper文件中的标签建立映射,则可以看到绿色的箭头指引
在这里插入图片描述
在这里插入图片描述

另外,觉得他的bug的解决办法很有效,可以参考一下 https://blog.csdn.net/u010648555/article/details/70880425

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值