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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?