mybatis_个人总结

Posted 赵小忠

tags:

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

在使用mybatis框架开发数据访问层的过程中,我在这段时间遇到很多细节问题困住我的开发进度,它们虽然很不起眼,但是你一旦忽略它们的存在性,则可能就会让你很痛苦,在这里我来分享一下我遇到的坑。

 

一、mybatis动态代理方式开发的规范:

1、注意在mybatis映射配置文件中的namespace属性的值必须是mapper接口的全路径名称。

2、注意映射文件中的标签上的id的值必须和mapper 接口中的方法名称保持一致。

3、要求映射文件中传入参数的数据类型必须和mapper接口中方法上形参的数据类型保持一致。

4、要求映射文件中输出参数的数据类型必须和mapper接口中方法的返回值的数据类型保持一致。

 

二、使用mybatis映射文件中#{}、${}俩个符号的注意点:

1、#{},表示占位符,起到占位的作用。

如果映射文件中输入参数的数据类型是简单类型(String、double、Integer、boolean等)的数据类型时,那么占位符中的变量名称随意起。

如果映射文件中输入类型的的数据类型是pojo类型时,那么占位符中的变量名称必须是pojo对象的属性名称,如果pojo对象中的属性包含了其他对象时,则变量名称必须是属性.属性.属性......。

2、${},表示拼接符,起到字符串原样拼接的作用。

如果映射文件中的输入参数的数据类型是简单类型(String、double、Integer、boolean等)的数据类型时,那么拼接符中的变量名称必须是value。

如果映射文件中输入类型的的数据类型是pojo类型时,那么占位符中的变量名称必须是pojo对象的属性名称,如果pojo对象中的属性包含了其他对象时,则变量名称必须是属性.属性.属性......。

3、在开发中如果使用拼接符${}时,一定要注意该符号有SQL注入的风险,必须避免该问题,能替代就替代。

1 <if test="custName!=null and custName!=‘‘">
2      <!-- 【注意:这里尽量使用#{}占位符,是为了防止sql注入的问题】 -->
3      <!-- and cust_name like ‘%${custName}%‘ -->
4      and cust_name like "%"#{custName}"%"
5 </if>

 

以上是关于mybatis_个人总结的主要内容,如果未能解决你的问题,请参考以下文章

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段

MyBatis学习总结_09_使用MyBatis Generator自动创建代码

[mybatis]动态sql_sql_抽取可重用的sql片段

MYBATIS01_概述及优缺点快速搭建工程Mybatis的增删改查操作总结

MyBatis学习总结_16_Mybatis使用的几个建议

关于mybatis我个人的理解