mybatis_个人总结

时间:2022-08-02 21:28:23

在使用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注入的风险,必须避免该问题,能替代就替代。

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