在这个mybatis的普通使用中依旧存在硬编码问题,虽然静态语句比原生jdbc都写更少了但是还是要写,Mapper就是用来解决原生方式中的硬编码还有简化后期执行SQL
UserMapper是一个接口,里面有很多方法,都是一一和配置文件里面的sql语句的id名称所对应,
官网中有提到,这种方法不依赖于字符串字面值,更安全,其次,如果IDE有代码补全,就可以快速选择到映射好的SQL语句
使用Mapper代理方式再来实现一次
MyBatis的简单使用_北岭山脚鼠鼠的博客-CSDN博客
1.定义SQL映射文件同名的Mapper接口,并且Mapper接口和SQL映射文件放置在同一目录下
为了达到这个效果在resources中新建和mapper所在路径一样的包,然后再使用Maven编译一下就可以在target中看见了,这个需要先将UserMapper.xml实现放到mapper里面
2.设置SQL映射文件的namespace属性为Mapper接口全限定名
如下图配置
3.在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
因为UserMapper.xml文件的位置变了,所以需要在项目配置文件里面也要改一下路径
4.编码部分与原本有所区别
简而言之就是使用一个接口实现了一些方法对应UserMapper里面的对应sql语句,使得不需要在程序里面硬编码,并且还有自动补全
最后输出也一样还有报错
小细节: 如果Mapper接口名称和SQL映射文件名称相同,并在统一目录下,则可以使用包扫描的方式简化SQK映射文件的加载