一、ibatis的关键字like查询

select * from t_student where s_name '%张%';

这种like语句在ibatis中怎么写,他们现在的项目是用ibatis作为持久层的框架。

我的第一反应是这样写:
<select id="showOneStudentByName" parameterClass="String" resultMap="studentORM">
     select * from t_student where s_name like #name#
</select>

但是在调用中需要在参数的前后加上%,比如这样:
return sqlMapper.queryForList("showOneStudentByName", "%"+name+"%");

虽然这样可行,但总显得有些不协调。仔细看了ibaitis的文档后发现最好的写法是这样
<select id="showOneStudentByName" parameterClass="String" resultMap="studentORM">
   select * from t_student where s_name like '%'||#name#||'%' 
</select>

在调用的时候就不用去前后加%了。

注意:sql语句不要写成select * from t_student where s_name like '%$name$%',这样极易受到注入攻击。
网上搜了一下ibatis的关于like的使用,撇开 '%$xxx$%' 不讲。网上的解决方法如下:

select *
from user
where username like '%'||#username#||'%'

其实上面的语句是针对Oracle 的,对于不同数据库字符串连接符不一样。 现列举mysql

select *
from user
where username like concat('%', #username#, '%')

            

二、ibatis操作陷阱
在使用iBatis操作数据的时候,容易跌入陷阱。
1、保存insert方法
在保存数据方面,iBatis的insert方法返回的是新增记录的主键,类型为Object,但实为整型,有时候会让人误解为实体类型,也并非任何表的insert操作都会返回主键----这是一个陷阱。
要返回这个新增记录的主键,前提是表的主键是自增型的,或者是Sequence的。否则获取新增记录主键的值为0或者null。
对于oracle这样来写:
<selectKey resultClass="int" keyProperty="id">
<![CDATA[
select hibernate_seq.nextval as id from dual
]]>
</selectKey>
对比Hibernate返回的Serializable类型,实际上也是主键。
2、更新删除update/delete方法
返回影响的记录行数。
3、对DAO/Service设计时候的影响
1)、对于自增主键类型表,DAO的save方法可以返回主键、或者实体对象(该对象的标识符域会填充上主键值)。
2)、对于非自增主键类型表,DAO的save方法,在保存之前就指导整个实体对象的所有值(包括主键),因此返回什么 都可以,也可以不返回值。
3)、对于Service的,不管表如何,一般都返回保存的实体对象。

来自:http://www.cnblogs.com/linjiqin/archive/2012/06/01/2529829.html

ibatis注意要点的更多相关文章

  1. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  2. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): da.huying.usermanag ...

  3. [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)

    [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date  周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...

  4. Spring+ibatis动态管理数据源

    Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...

  5. iBatis.net 循环iterate,没有foreach

    3.9.4. Iterate Element This tag will iterate over a collection and repeat the body content for each ...

  6. ibatis 轻松入门

    1.总中的配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig ...

  7. IBatis.Net使用总结(四)-- IBatis 调用存储过程

    IBatis 调用存储过程 http://www.cnblogs.com/jeffwongishandsome/archive/2010/01/10/1543219.html http://www.c ...

  8. MyBatis-Exception:org.apache.ibatis.exceptions.PersistenceException

    错误信息如下: HTTP Status 500 - org.mybatis.spring.MyBatisSystemException: nested exception is org.apache. ...

  9. Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

随机推荐

  1. httpclient的简单使用

    1.通过get请求后台,注意tomcat的编码设置成utf-8;    <Connector connectionTimeout="20000" port="808 ...

  2. vue的通讯与传递props emit (简单的弹框组件)

    props父把信息传递给子组件 1父组件 <template> <div class="hello"> <div id="app-3&quo ...

  3. VS2013中Nuget程序包管理器控制台使用入门(一)-准备环境(原创)

    准备环境: 1.打开VS2013IDE集成开发环境. 2.新建一个Asp.net Mvc的项目,比如命名为:MvcApplication1 3.打开 菜单"工具"->&quo ...

  4. python 网络下载的三种风格 未完成

    import osimport timeimport sys import requests#依序下载POP20_CC = ('CN IN US ID BR PK NG BD RU JP' 'MX P ...

  5. mysql 常用 sql

    查询表创建时间.修改时间等 SELECT * FROM information_schema.tables    WHERE table_schema='ty_supplier' AND table_ ...

  6. UVALive - 3266 (贪心) 田忌赛马

    耳熟能详的故事,田忌赛马,第一行给出田忌的马的速度,第二行是齐王的马的速度,田忌赢一场得200,输一场失去200,平局不得也不失,问最后田忌最多能得多少钱? 都知道在故事里,田忌用下等马对上等马,中等 ...

  7. javascript 高级程序设计 二

    这里我们直接进入主题: 在JS刚刚开始的时候,必须面临一个问题,那就是如何使的JS的加载和执行不会影响web核心语言HTML的展示效果,和HTML和谐共存. 在这个背景下<script>标 ...

  8. spring batch遇到的一些问题

    1.Spring Batch - A job instance already exists: JobInstanceAlreadyCompleteException 这是因为JobParameter ...

  9. HISAT,sTRINGTIE,ballgown三款RNA-seq信息分析软件

    HISAT,sTRINGTIE,ballgown三款RNA-seq信息分析软件 2015年04月02日 11:35:47 夜丘 阅读数:8940 标签: 生物 更多 个人分类: 论文笔记   Bowt ...

  10. BZOJ1051或洛谷2341 [HAOI2006]受欢迎的牛

    BZOJ原题链接 洛谷原题链接 显然在一个强连通分量里的奶牛都可以相互喜欢,所以可以用\(tarjan\)求强连通并缩点. 要求明星奶牛必须被所有人喜欢,显然缩点后的图必须满足只有一个点没有出度,因为 ...