码迷,mamicode.com
首页 > 数据库 > 详细

DB杂记

时间:2015-02-08 18:01:30      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

1. mybatits 批量插入:

    <insert id="insertColumnitem2">

               INSERT INTO REPORT_COLUMNITEM (COLUMN_LABEL,COLUMN_FIELD,COLUMN_INDEX,REPORT_ID,COMMENTS)

            <foreach collection="list" item="item" index="index" separator="union all">

                     select #{item.columnLabel,jdbcType=VARCHAR},#{item.columnField,jdbcType=VARCHAR},#{item.columnIndex,jdbcType=NUMERIC},

                              #{item.reportID,jdbcType=NUMERIC},#{item.comments,jdbcType=VARCHAR} from dual 

            </foreach>

     </insert> 

2. mybitis 模糊查询:like ‘%#{name}%‘ 

3. 数据库中表比较大,查询比较慢时,可以考虑缓存。缓存包括缓存到内存和硬盘(文件)。 

4. clob类型字段数据处理:如果数据库无值,先插入空值(EMPTY_CLOB())。然后再查询出来赋值,查询的时候需要注意,要锁定该条记录(select *** for update)。

    然后将clob转换为具体的数据库clob类型,进行赋值。

5. ORACL 异常:can bind a LONG value only for insert into a LONG column:

    原因大概如下:

    1).插入到字符串长度大于4000字节。

    2).插入到表中的记录的某个字段数据的实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串。

    3).数据库与客户端的JDBC驱动不匹配。

6.报错误:仅能绑定要插入 LONG 列的 LONG 值。错误的原因:检查插入的值是否大于该字段数据类型约束的长度。

 

7. union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

8. union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列

    的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。

9. 当使用union 或 union all时,我们没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条 order by来对整个结果进行排序。

10. mybatits中因为语句中有一个小于号“<”,在XML中,会被当成一个页面元素来解析,不会处理为SQL语句的组成部分,需要将这部分语句放到<![CDATA[]]中。修改如下:

      <![CDATA[

                  and timestampdiff(second, create_time, now()) <= 2592000

       ]]>

       这样,将会把SQL语句中与XML页面元素相同的元素屏蔽,是的XML不将其解析为XML的元素,从而生成正确的SQL语句。

11. mybatis中打印SQL语句的日志级别为DEBUG,若想打印SQL语句,可以将日志级别设置为DEBUG即可。

 

DB杂记

标签:

原文地址:http://www.cnblogs.com/Jtianlin/p/4280231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!