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注入的风险,必须避免该问题,能替代就替代。
<if test="custName!=null and custName!=''">
<!-- 【注意:这里尽量使用#{}占位符,是为了防止sql注入的问题】 -->
<!-- and cust_name like '%${custName}%' -->
and cust_name like "%"#{custName}"%"
</if>
mybatis_个人总结的更多相关文章
- mybatis_常用标签
1.<where></where>标签的作用 可以动态的添加where关键字 可以自动去掉第一个拼接条件的and关键字 <where> <if test=&q ...
- mybatis_映射查询
一.一对一映射查询: 第一种方式(手动映射):借助resultType属性,定义专门的pojo类作为输出类型,其中该po类中封装了查询结果集中所有的字段.此方法较为简单,企业中使用普遍. <!- ...
- mybatis_开发篇
一.使用mybatis的动态代理方式开发 需求:这里以crm系统中分页条件查询所有的客户信息的功能为例? 1.创建工程 2.引入所需的jar包 3.引入日志文件.数据库连接参数的配置文件等 4.创建m ...
- mybatis_基础篇
一.认识mybatis: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...
- [刘阳Java]_什么是MyBatis_第1讲
1.什么MyBatis,我们先通过百度百科先进行一个简单的了解 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation ...
- MyBatis_关联关系查询
一.关联查询 当查询的内容涉及到具有关联关系的多个表时,就需要使用关联查询.根据表与表间的关联关系的不同.关联查询分为四种: 一对一关联查询: 一对多关联查询: 多对一关联查询: 多对多关联查询: 二 ...
- MyBatis_延迟加载01
一.延迟加载 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时, 按照设置延迟规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. MyBatis的延迟加载只是对关联 ...
- MyBatis_动态SQL
一.动态SQL 动态SQL,主要用于解决查询条件不确定的情况:在程序运行期间,根据提交的查询条件进行查询. 动态SQL,即通过MyBatis提供的各种标签对条件作出判断以实现动态拼接SQL语句. 二. ...
- MyBatis_多查询条件问题
一.多查询条件无法整体接收问题的解决 在实际工作中,表单中所给出的查询条件有时是无法将其封装成一个对象,即查询方法只能携带多个参数,而不能携带将这多个参数进行封装的一个对象.对于这个问题,有两种解决方 ...
随机推荐
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- Http状态码之:301、302重定向
概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地 ...
- eclipse 快捷键大全
注:因eclipse版本.电脑配置等原因 有些快捷键可能导致不可用(遇到些许问题可在下方评论) [Ct rl+T] 搜索当前接口的实现类 1. [ALT +/] 此快捷键为用户编辑的好帮手,能为 ...
- 深入理解CSS中的margin负值
前面的话 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它.它看似简单 ...
- VS2015在创建项目时的一些注意事项
一.下面是在创建一个新的项目是我最常用的,现在对他们一一做一个详细的介绍: 1.Win32控制台应用程序我平时编写小的C/C++程序都用它,它应该是用的最多的. 2.名称和解决方案名称的区别:名称是项 ...
- Maven 整合FreeMarker使用
pom.xml <!-- freemarker jar --> <dependency> <groupId>org.freemarker</groupId&g ...
- iOS 10 跳转系统设置
苦心人天不负, 为了项目终于把 iOS 10 跳转系统设置的方法给搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳转系统设 ...
- IP报头
位字段的值设置为二进制的0100表示IP版本4(IPv4).设置为0110表示IP版本6(IPv6) 位,它表示32位字长的IP报头长度,设计报头长度的原因是数据包可选字段大小会发生变化.IP ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)
[引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...
- ASP.NET 中的 Async/Await 简介
本文转载自MSDN 作者:Stephen Cleary 原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx 大多数有关 async ...