sql
蜡笔小勋
广东工业大学计算机学院软件工程专业
展开
-
mybatis如何防止sql注入
sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如“or ‘1’=’1’”这样的语句,有可能入侵参数校验不足的应用程序。所以在我们的应用中需要做一些工作,来防备这样的攻击方式。在一些安全性很高的应用中,比如银行软件,经常使用将sql语句全部替换为存储过程这样的方式,来防止sql注入,这当然是一种很安全的方式,但我们平时开发中,可能不需要这种转载 2017-01-06 11:41:15 · 478 阅读 · 0 评论 -
优化sql
1、 优化group by语句默认情况下,mysql对所有group bycol1,col2…的字段进行排序。这与在查询中指定order by col1,col2…类似。因此,如果显式包括一个包含相同的列的order by 子句,则对mysql的实际执行性能没有什么影响。如果查询包括groupby 但用户想要避免排序结果的消耗,则可以指定order by null 禁止排序,如下面例子:原创 2017-01-10 16:00:41 · 300 阅读 · 0 评论 -
mybatis执行批量更新batch update 的方法(oracle,mysql)
oracle和mysql数据库的批量update在mybatis中配置不太一样:oracle数据库:update id="batchUpdate" parameterType="java.util.List"> foreach collection="list" item="item" index="index" open="begin" close="end;" sepa转载 2017-01-10 14:17:14 · 1020 阅读 · 0 评论 -
MyBatis批量插入数据
在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来。 实体类TrainRecord结构如下: Java代码 public class TrainRecord im转载 2017-01-10 14:15:07 · 491 阅读 · 0 评论 -
MySql小点心—1、赋值操作符"="与":="
对于刚接触到mysql的程序员来说,会对这两个符号有疑问,因为会发现有的代码里用这个有的用另一个。当然他们是有区别的。他们的区别也比较简单: “:=” 是真正意义上的赋值操作,左边的变量设置为右边的值。"=" 则只在两种情况下作为赋值用,第一种就是在SET语句里面,SET var = value;另一种是在UPDATE语句里面的那个SET,如update table转载 2017-01-10 11:03:09 · 683 阅读 · 0 评论 -
mysql索引分类
索引是在mysql的存储引擎层中实现的,而不是在服务器层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型。(1) Btree索引:最常见的索引类型,大多数引擎都支持B树索引。(2) HASH索引:只有memory引擎支持,使用场景简单。(3) Rtree索引:MyISAM的一个特殊索引类型,主要用于地理空间数据类型,原创 2017-01-10 10:42:32 · 288 阅读 · 0 评论 -
索引合并和组合索引的比较
在教务系统补考子系统的开发过程中,安排考场的算法运算时间非常慢,需要32秒才能完成考场的分配。查找原因,由于需要在学生补考科目表里面进行查找数据——该表的数据目前已达200万条,所以算法的大部分时间都花在查找数据方面。为了解决以上问题,我们决定对数据表进行分析,创建合适的索引。在创建索引过程中,我们发现查询语句已经为查询列创建了索引,但是是为每个列单独创建的——SELECT * FRO转载 2017-01-09 22:26:33 · 744 阅读 · 0 评论 -
MySQL查看SQL语句执行效率
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。Explain语法:explain select … from … [where ...]例如:explain select * from news;输出:转载 2017-01-09 09:53:22 · 86 阅读 · 0 评论 -
Oracle中ROWNUM的使用技巧。
ROWNUM是一种伪列,它会根据返回记录生成一个序列化的数字。利用ROWNUM,我们可以生产一些原先难以实现的结果输出,但因为它是伪列的这个特殊性,我们在使用时也需要注意一些事项,不要掉入“陷阱”。下面就介绍一下它的使用技巧及注意事项。1 特殊结果输出利用ROWNUM,我们可以做到一些特殊方式的输出。1.1 Top N结果输出我们如果希望取输出结果的前面几条转载 2017-01-06 14:24:12 · 112 阅读 · 0 评论 -
MyBatis/Ibatis中#和$的区别
MyBatis/Ibatis中#和$的区别1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中。如:order by $us转载 2017-01-06 13:50:42 · 112 阅读 · 0 评论 -
Spring事务传播性与隔离级别
事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。事务最重要的两个特性,是事务的传播级别和数据隔离级别。传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。以下是事务的7种传播级别:1) PROPAGATION_REQUIRED ,默认的spring事务传播级别,使用该级别的特点是,如转载 2017-07-11 10:43:31 · 354 阅读 · 0 评论