- 浏览: 686204 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (254)
- java分布式应用架构 (22)
- SSH框架整合 (6)
- java web 学习笔记 (49)
- java 学习笔记 (56)
- struts 2 学习 (6)
- Hibernate学习 (10)
- spring 学习 (2)
- 客户端编程(javascript) (4)
- IDE使用 (13)
- 生命 人生 (6)
- 系统维护 (3)
- 技术篇 (10)
- MySql (2)
- J2ME (1)
- java网络编程 (4)
- 数据库 (5)
- C/C++ (8)
- Oracle (7)
- 软件测试 (0)
- 软件的安装和部署 (0)
- Java快讯 (1)
- swt (1)
- Flex (1)
- 软件工程 (1)
- PostgreSQL (1)
- sql server2000 (2)
- 嵌入式数据库sqlite (5)
- J2EE (1)
- XML (1)
- ibatis3(MyBatis) (6)
- Linux&Unix (1)
- velocity (1)
- 回报社会 (4)
- 软件项目管理 (3)
- android研究 (3)
- C# (2)
- Objective-C (1)
- 音乐 (0)
- webx (1)
- JMS (1)
- maven软件项目管理 (1)
- 分布式服务 (0)
- 云平台 (0)
- 分布式存储 (1)
- 分布式系统架构 (0)
- 移动互联网 (1)
- ZooKeeper (1)
最新评论
-
liyys:
楼主,可不可以发这个项目的源码工程出来分享一下,少了几个类。楼 ...
仿照Hibernate实现一个SQLite的ORM框架 -
liyys:
少了一些类的源码没有粘贴出来
仿照Hibernate实现一个SQLite的ORM框架 -
honglei0412:
我使用的是这种方式获取db文件的目录但是 URL p = Fi ...
使用sqlite注意事项 -
honglei0412:
大侠 能不能说明下DbFile您是怎么做的吗?
使用sqlite注意事项 -
ahack:
刚写完mapping才发现早就有人写好了。仔细一看还都是针对的 ...
仿照Hibernate实现一个SQLite的ORM框架
为了防止SQL注入,iBatis模糊查询时也要避免使用$$来进行传值。下面是三个不同数据库的ibatis的模糊查询传值。
如:
不要这样来写:
mysql: select * from stu where name like concat('%',#name #,'%') oracle: select * from stu where name like '%'||#name #||'%' SQL Server:select * from stu where name like '%'+#name #+'%
如:
<!-- 用途:小二后台查询活动的数目 --> <!-- 频率:1000/天 --> <!-- 维护:刘飞 --> <select id="countActivitySearch" resultClass="java.lang.Long" parameterClass="actDO"> <![CDATA[ select count(id) from activity ]]> <dynamic prepend="WHERE"> <isNotNull prepend=" AND " property="name"> name LIKE CONCAT('%', #name#, '%') </isNotNull> <isNotNull prepend=" AND " property="itemId"> itemId = #itemId# </isNotNull> <isNotNull prepend=" AND " property="itemName"> itemName LIKE CONCAT('%', #itemName#, '%') </isNotNull> <isNotNull prepend=" AND " property="status"> status = #status# </isNotNull> <isNotNull prepend=" AND " property="actStatus"> actStatus = #actStatus# </isNotNull> <isNotNull prepend=" AND " property="domain"> domain LIKE CONCAT('%', #domain#, '%') </isNotNull> </dynamic> </select> <!-- 用途:小二后台查询活动的列表 --> <!-- 频率:1000/天 --> <!-- 维护:刘飞 --> <select id="searchActivityForList" resultMap="actResult" parameterClass="actDO"> <![CDATA[ select * from activity ]]> <dynamic prepend="WHERE"> <isNotNull prepend=" AND " property="name"> name LIKE CONCAT('%', #name#, '%') </isNotNull> <isNotNull prepend=" AND " property="itemId"> itemId = #itemId# </isNotNull> <isNotNull prepend=" AND " property="itemName"> itemName LIKE CONCAT('%', #itemName#, '%') </isNotNull> <isNotNull prepend=" AND " property="status"> status = #status# </isNotNull> <isNotNull prepend=" AND " property="actStatus"> actStatus = #actStatus# </isNotNull> <isNotNull prepend=" AND " property="domain"> domain LIKE CONCAT('%', #domain#, '%') </isNotNull> </dynamic> <![CDATA[ order by starttime desc, createtime desc limit #startRow#, #perPageSize# ]]> </select>
不要这样来写:
<select id="searchActivityForCount" resultClass="java.lang.Long" > <![CDATA[ select count(*) from activity ]]> <dynamic prepend="WHERE"> <isNotNull prepend=" AND " property="name"> name LIKE '%$name$%' </isNotNull> <isNotNull prepend=" AND " property="itemId"> itemId LIKE '%$itemId$%' </isNotNull> <isNotNull prepend=" AND " property="itemName"> itemName LIKE '%$itemName$%' </isNotNull> <isNotNull prepend=" AND " property="status"> status = #status# </isNotNull> <isNotNull prepend=" AND " property="actStatus"> actStatus = #actStatus# </isNotNull> <isNotNull prepend=" AND " property="domain"> domain LIKE '%$domain$%' </isNotNull> </dynamic> </select> <select id="searchActivityForList" resultMap="actResult" parameterClass="actDO"> <![CDATA[ select * from activity ]]> <dynamic prepend="WHERE"> <isNotNull prepend=" AND " property="name"> name LIKE '%$name$%' </isNotNull> <isNotNull prepend=" AND " property="itemId"> itemId LIKE '%$itemId$%' </isNotNull> <isNotNull prepend=" AND " property="itemName"> itemName LIKE '%$itemName$%' </isNotNull> <isNotNull prepend=" AND " property="status"> status = #status# </isNotNull> <isNotNull prepend=" AND " property="actStatus"> actStatus = #actStatus# </isNotNull> <isNotNull prepend=" AND " property="domain"> domain LIKE '%$domain$%' </isNotNull> </dynamic> <![CDATA[ order by starttime desc, createtime desc limit #startRow#, #perPageSize# ]]> </select>
发表评论
-
Java编程中“为了性能”尽量要做到的一些地方
2012-09-14 10:33 12251. 尽量在合适的场合使 ... -
Java 5.0多线程编程
2012-08-17 19:16 1069概述 1:三个新加的多线程包 2:C ... -
Thread.setDaemon设置说明
2012-06-28 18:00 1157Thread.setDaemon的用法,经过学习以后了解: ... -
JVM运行时数据区
2012-03-07 13:15 1009JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些 ... -
iBATIS之父:iBATIS框架的成功蜕变
2012-03-01 13:49 1157推荐阅读: 1.《iBATIS 实战》——国内第一本iBAT ... -
java的引用探讨
2011-12-18 16:03 1130Reference 是一个抽象类,而 SoftReferenc ... -
ClassLoader
2011-11-04 15:11 1199package org.liufei.neta.lib; ... -
仿照Hibernate实现一个SQLite的ORM框架
2011-09-30 20:06 3199那么先来看看使用 实体对象 package test; ... -
java压缩文件
2011-09-20 11:09 1297package org.liufei.net.util; ... -
获取客户机IP地址
2011-09-07 15:04 1036package org.liufei.jweb; imp ... -
Java读取本地机器MAC地址
2011-09-07 15:01 1305package org.liufei.jweb; imp ... -
获取IP地址
2011-09-07 13:41 2426public String getIpAddrByReques ... -
用CSS来美化Java桌面--Javacss
2011-09-02 12:14 1336CSS可以用来修饰HTML网页。 但你有没有想过,使用CSS ... -
java管理windows进程
2011-08-29 17:34 1783package org.zzuli.xmsb; /** ... -
java html工具
2011-08-29 17:26 1088package org.liufei.jweb.util; ... -
java将汉字转化为全拼
2011-08-29 17:24 1236package org.liufei.jweb.util; ... -
开源项目SVN源码地址
2011-08-22 16:20 3556多优秀的开源项目已经提供SVN源码签出了,无论是解疑还是学习, ... -
XML解析
2011-08-22 09:58 10271、DOM解析XML <?xml version=&q ... -
jdbc操作大观园
2011-08-09 17:22 1386最近公司使用jdbc和mybatis比较多,于是自己试着写了一 ... -
Windows XP系统总命令集合
2011-08-05 14:08 1080Windows XP系统总命令集合 winver----- ...
相关推荐
方法一:利用google高级搜索,比如搜索url如.asp?... 您可能感兴趣的文章:Java面试题解析之判断以及防止SQL注入SQL注入原理与解决方法代码示例通过ibatis解决sql注入问题Win2003服务器防SQL注入神器–D盾_IIS防火墙
3. **参数绑定**:在iBatis映射文件中,可以使用占位符绑定动态参数,实现SQL语句的参数化,提高安全性并防止SQL注入。 综上所述,这个项目演示了如何结合ASP.NET MVC、iBatis和SQL来构建一个简单的Web应用程序。...
此外,iBATIS支持预编译的PreparedStatement,能有效防止SQL注入攻击,提高执行效率。 总的来说,这份《iBATIS-SqlMaps-2_cn.pdf》文档全面涵盖了iBATIS框架的关键概念、配置和使用方法,是学习和使用iBATIS的重要...
例如,`select * from PRODUCT where PRD_CAT_ID = #{value}`中的`#{value}`是预编译参数,能有效防止SQL注入。 总结,Ibatis提供了灵活的SQL映射机制,使得开发人员能够更好地控制SQL的执行。同时,通过与Struts和...
通常情况下,`#`被用来防止SQL注入,它会将变量转化为预编译语句中的占位符。例如: ```sql select * from member where id = #id# ``` 当在Java代码中设置`id`为某个值时,iBATIS会将其转换为如下的预编译SQL: ...
PreparedStatement支持预编译,提高性能并防止SQL注入;SimpleStatement则用于简单的SQL执行。 3. **ParameterMap**和**ParameterValuePair**:用于传递SQL查询参数。ParameterMap定义了参数和它们的映射关系,...
1. 防止SQL注入攻击:在使用iBATIS进行模糊查询时,需要确保参数的安全性,以防止SQL注入攻击。例如,以下代码是错误的: ```sql SELECT * FROM t_stu WHERE s_name LIKE '%$name$%' ``` 这种代码容易受到SQL注入...
1. **参数绑定**:iBatis使用占位符(#{})进行参数绑定,可以防止SQL注入攻击。当使用#{paramName}时,iBatis会自动处理参数,将其转化为预编译SQL中的问号,类似于PreparedStatement在Java JDBC中的作用。 2. **...
此外,iBatis支持预编译的PreparedStatement,以防止SQL注入攻击,并提供了强大的结果集映射功能,能够自动将查询结果转换为Java对象,甚至处理一对多、多对一等复杂关系。同时,它的事务控制灵活,既支持手动控制,...
#{ } 用于预编译的参数,能防止 SQL 注入;${} 则是简单的字符串替换,适用于非预编译场景。 7. **结果映射**:iBATIS 可以自动将查询结果映射到 Java 对象,无需手动处理。这包括自动类型转换、一对一、一对多等...
PreparedStatement更安全,能有效防止SQL注入,而SimpleStatement则更适合简单的、不常变动的SQL。 标签“ibatis jar”表明这是一个包含Ibatis库的JAR文件,其中可能包括了`ibatis-core.jar`、`ibatis-sqlmap.jar`...
`#{}` 语法用于参数绑定,它可以防止SQL注入。在SQL语句中,#{paramName}会被替换为预编译语句的占位符,参数值则在执行时传入。 5. **结果映射**: 结果映射定义了如何将查询结果映射到Java对象。`<resultMap>`...
1. **防止SQL注入**:问号参数化能有效防止SQL注入攻击。因为它确保了用户输入的数据不会被解析为SQL代码,而是作为原始数据处理。即使用户尝试插入恶意SQL,数据库也会将它们视为普通字符串,而不会执行。 2. **...
SQL预编译是数据库操作中的一个重要概念,...总的来说,SQL预编译是防止SQL注入和提升数据库操作性能的重要手段,尤其是在iBatis等框架中,应优先考虑使用PreparedStatement来编写动态SQL,确保应用的安全性和高效性。
在SQL语句中,我们可以使用#{}和${}两种占位符,前者用于防止SQL注入,后者则会原样输出。 在实际使用中,我们首先需要创建一个SqlSessionFactoryBuilder,然后用其构建SqlSessionFactory。接着,通过...
7. **性能优化**:通过CodeSmith生成的代码通常会遵循最佳实践,例如,使用预编译的PreparedStatement来防止SQL注入并提升性能。 8. **版本控制**:生成的代码应纳入版本控制系统,如Git,以便团队协作和跟踪代码...
使用`#{}`的方式可以有效防止SQL注入攻击。这是因为预编译的方式会将参数作为独立的单元处理,而不是简单地拼接到SQL语句中。这种方式使得即使传入了恶意的SQL代码,也不会被执行。 - **#{} 对 SQL 注释的支持** ...
同时,安全问题也不能忽视,比如防止SQL注入的策略。 总的来说,《夏昕-iBatis 开发指南》不仅覆盖了iBatis的基本用法,还深入探讨了其实战中的高级应用,对于想要精通iBatis的开发者来说是一份宝贵的资源。通过...
2. Statement和PreparedStatement:执行SQL语句,前者用于基本的SQL,后者支持预编译的SQL,提高性能并防止SQL注入。 3. ResultSet:存储查询结果,提供了遍历、获取数据的方法。 4. Connection和Statement的生命...
`#{}`是Ibatis的预编译参数占位符,能有效防止SQL注入。 在Java代码中,我们可以通过SqlSession的`selectOne`、`insert`、`update`和`delete`方法调用对应的Mapper接口方法,执行数据库操作。例如: ```java try ...