整理iBATIS的一些重要点和一些常见问题的解决
2010-03-29 17:52
435 查看
1、iBatis配置:增加记录时返回随机生成的主键值:
2.动态添加参数
3.关键字:#和$的区别
一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.
总结如下:
1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..
2.$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了.
3.#方式能够很大程度防止sql注入.
4.$方式无法方式sql注入.
5.$方式一般用于传入数据库对象.例如传入表名.
6.一般能用#的就别用$.
<insert id=/"insertIntoDB/" parameterClass=/"BepsContract/"> <selectKey resultClass=/"int/" keyProperty=/"contractPk/"> SELECT BEPS_CONTRACT_PK.NEXTVAL FROM DUAL </selectKey> insert into 。。。。。 </insert>
2.动态添加参数
<select id=/"selectIncomingTimeDebitPkg/" resultClass=/"java.util.HashMap/" parameterClass=/"CondPkgheadTo/"> select B.*, FLOOR((select WORKING_DAY from NCS_BEPS_MBFE_STATUS where BRANCH_ID = #branchId:VARCHAR#) - B.CONSIGNED_DATE) AS REMAIN_DAYS from NCS_BEPS_PKGHEAD B where MSG_CODE = #msgCode:VARCHAR# and BRANCH_ID = #branchId:VARCHAR# and package_head_pk in (select package_head_pk from ncs_beps_txn_in where MSG_CODE = #msgCode:VARCHAR# and BRANCH_ID = #branchId:VARCHAR# and GROUP_ID = #groupId:VARCHAR# <isNotNull property=/"processStatusList/"> <iterate prepend=/"and/" property=/"processStatusList/" open=/"(/" close=/")/" conjunction=/"or/"> PROCESS_STATUS =( #processStatusList[]# ) </iterate> </isNotNull> ) <iterate prepend = /"and/" property = /"msgProcessStatusList/" open = /" (/" close = /") /" conjunction = /"or/"> MSG_PROCESS_STATUS = ( #msgProcessStatusList[]# ) </iterate> <isNotNull property=/"searchFailStatus/" prepend=/"and/"> <!--[CDATA[ BEPS_STATUS <> /'BACK00/' ]]--> </isNotNull> </select>
3.关键字:#和$的区别
一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.
总结如下:
1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..
2.$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了.
3.#方式能够很大程度防止sql注入.
4.$方式无法方式sql注入.
5.$方式一般用于传入数据库对象.例如传入表名.
6.一般能用#的就别用$.
相关文章推荐
- WordPress迁移时一些常见问题的解决方法整理
- WordPress迁移时一些常见问题的解决方法整理
- DIV+CSS构建网站时常会出现浏览器不兼容的问题,下面整理了一些常见不兼容问题,及解决办法!
- 常见问题及解决办法 整理之5(一些有用的系统存储过程及用法)
- win7系统中常见的一些小问题和解决方法简单整理
- 【整理】常见Centos安装问题及其解决办法
- ubuntu下Qt之android环境配置以及一些常见问题解决
- 在决定使用ClickOnce发布你的软件前,应该知道的一些事情(一些常见问题解决方法)
- 整理CSS中遇到的一些常见问题
- Android 一些常见问题的解决
- 常见问题及解决办法 整理之1(表的相关查询)
- 常见问题及解决办法 整理之8-2(日期的相关操作)
- 常见问题及解决办法 整理之2(普通行列转换)
- 一些常见的问题与解决代码!(二)(JS)
- 整理前端css/js/jq常见问题及解决方法(3)
- 网页中一些常见的问题与javascript解决代码
- 一些常见的问题与解决代码!(精典) 2
- 解决一些系统常见的访问拒绝问题
- CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法