sql语句的一些学习

开始自己写代码了,才发现自己的基础太薄弱了。数据库的很多知识都不知道。以后要多看看这样的书。

在项目中搬到了很多次,现在总结总结:

1、用springMVC+mybatis  在写sql语句的时候,把$ 和# 弄混了,结果没有找了半天错误,都没有找出来。

 注:#{} 是传的变量的值,自动给变量值加上“”引号; ${}传的是变量的名称,一般为数据库中的表名

#可以防止sql注入的问题,而$不会防止

2、mysql和postgres的分页查询语句,可以相互用 ,但注意使用方法。 

 mysql :limit  start,count    

 postgres:limit  count  offset start   

3、数据库的查询

  这些语句的使用:条件判断语句       (case when msg_id=0 then a end )

今天在写sql时,遇到了一个奇葩的问题:传int 型的参数到数据库,传0以外的任何数都能成功修改数据库表中的值,但是传0却无法修改,数据库中的值没有变化。

尝试了各种方法:1、在navicat中写sql,传入0,可以修改。2、改设计表时的默认值,改程序里面的字段默认值(这些方法都很盲目,毫无依据,最终都没有成功),最后想到是不是和mybatis的test条件有关,于是上网查资料,http://bbs.csdn.net/topics/391875920 这篇博客很瘦教育。又长知识了。


 java程序里面,Integer是引用类型,初始值肯定是null, 你设定为0,肯定不为null的,但是在mybatis里面,你传入参数是int,作为参数处理,他的初始值就是0.  ,你传入0,默认为空的

<if test  flag!=null> </if>   改为这个即可。

原来的是 <if test flag!=null and flag!='' > </if>   在flag为0,时,mybatis会把它当做默认值(及没有传值)空。我解释的也是不到位,理解还是不透彻。


posted @ 2016-03-14 19:22  yeemi  阅读(113)  评论(0编辑  收藏  举报