MyBatis的Mapper动态代理
1. Mapper动态代理
mapper不使用动态代理是指dao层的实现自己创建,在接口实现类的方法中自己调用SqlSession完成对数据库的操作,这样只能向SQL中传递一个参数,多个参数要封装到POJO或者Map中,且调用SqlSession对象的方法时会有硬编码现象namespace+id
使用Mapper动态代理只需要写dao层接口,不需要创建dao层实现类,Mybatis会自动生成实现类的代理对象。在dao层只需要创建接口与映射文件即可
2. Mapper动态代理规范
- 接口名称需要与映射文件名称相同
- 映射配置文件中namespace必须是接口的全名
- 接口中的方法名和映射配置文件中的标签的id一致
- 接口中的返回值类型和映射配置文件中的resultType的指定类型一致
3. 顺序传参法
在映射文件中,SQL语句中的参数需要使用arg0,arg1…或者param1,param2…表示参数的顺序。此方法可读性低,且要求参数的顺序不能出错,在开发中不建议使用
4.@Param注解传参法![请添加图片描述](https://img-blog.csdnimg.cn/3d7e69ce8c22418a9c359b2a411fd15b.png)
![请添加图片描述](https://img-blog.csdnimg.cn/9b736a56ab10416e86f242e95d184a9a.png)
5. POJO传参法![请添加图片描述](https://img-blog.csdnimg.cn/da4b1d8b32fb40a28f0fc72e701e8bd3.png)
![请添加图片描述](https://img-blog.csdnimg.cn/ae4f520ad27f4ece800d1e5f22d8ead0.png)
6. Map传参法
Mapper中的参数必须与map中的key保持一致!