DB杂记
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即可。
12. ibatis和mybatis中$与#的区别:
对于变量部分, 应当使用#, 这样可以有效的防止sql注入, 未来,# 都是用到了prepareStement,这样对效率也有一定的提升。
$只是简单的字符拼接而已,对于非变量部分, 那只能使用$, 实际上, 在很多场合,$也是有很多实际意义的。
例如
select * from $tableName$ 对于不同的表执行统一的查询,可以在表后面加条件语句
update $tableName$ set status = #status# 每个实体一张表,改变不用实体的状态
特别提醒一下, $只是字符串拼接, 所以要特别小心sql注入问题。
DB杂记的更多相关文章
- legend3---6、legend3爬坑杂记
legend3---6.legend3爬坑杂记 一.总结 一句话总结: 学东西不做项目也学不到深处,其实也就是学了没理解透, 1.lavarel中模型关联可以用的实质是? lavarel在数据库中插入 ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答
用VS15 preview 5打开文件夹(详情查看博客http://www.cnblogs.com/zsy/p/5962242.html中配置),文件夹下多一个slnx.VC.db文件,如下图: 本文 ...
- ODBC、OLE DB、 ADO的区别
转自:http://blog.csdn.net/yinjingjing198808/article/details/7665577 一.ODBC ODBC的由来 1992年Microsoft和Syba ...
- Linux平台 Oracle 11gR2 RAC安装Part3:DB安装
四.DB(Database)安装 4.1 解压DB的安装包 4.2 DB软件安装 4.3 ASMCA创建磁盘组 4.4 DBCA建库 4.5 验证crsctl的状态 Linux平台 Oracle 11 ...
- SSRS ----环境配置,没有 ReportServer DB 怎么办?
今天项目进入报表开发阶段,按照习惯,打开报表管理器,发现提示下面的错误: 错误:报表服务器无法打开与报表服务器数据库的连接.所有请求和处理都要求与数据库建立连接. 这是怎么回事儿呢,经过排查,发现数据 ...
- mongo DB for C#
(1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...
- [Erlang 0118] Erlang 杂记 V
我在知乎回答问题不多,这个问题: "对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?",我还是主动回答了一下. 做笔记 一开始笔记软件做的不好的时候就发邮件给自己, ...
- jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...
随机推荐
- C文件流
在Linux系统中,系统默认认为每个进程打开了3个文件,即每个进程默认可以操作3 个流,即标准输入了流(/dev/stdin),标准输出流(/dev/stdout),标准错误输出流(/dev/stde ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——纹理贴图(6)
在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object).IBO(Index Buffer Object)和MVP(Modile-View-P ...
- iOS - UIImageView - how to handle UIImage image orientation
本文转载至 http://stackoverflow.com/questions/8915630/ios-uiimageview-how-to-handle-uiimage-image-orienta ...
- ubuntu下Eclipse创建Django项目
(注:部分过程可能需要FQ) Eclipse版本:Mars.x 点击help->Eclipse Marketplace,搜索“PyDev”并下载安装. 然后选择window->prefer ...
- iOS - 布局重绘机制相关方法的研究
iOS View布局重绘机制相关方法 布局 - (void)layoutSubviews - (void)layoutIfNeeded- (void)setNeedsLayout —————————— ...
- poj_3468 线段树
题目大意 一个数列,每次操作可以是将某区间数字都加上一个相同的整数,也可以是询问一个区间中所有数字的和.(这里区间指的是数列中连续的若干个数)对每次询问给出结果. 思路 对于区间的查找更新操作,可以考 ...
- UVa 673 Parentheses Balance (stack)
题目描述 : 判断字符串是不是符合正确的表达式形式. 要点 : 考虑字符串为空的时候,用getline输入,每一次判断后如果为No则要清空栈.对称思想. 注意输入格式. 代码: #include &l ...
- 使用MAT分析Java内存
Overview MAT(Memory Analyzer Tool) 是一个JAVA Heaper分析器,可以用来分析内存泄露和减少内存消耗.分析Process showmap中的/dev/ashme ...
- 统计文件中单词的个数---Shell及python版
最近在看shell中有个题目为统计单词的个数,使用了awk功能,代码如下 #!/bin/bash ];then echo "Usage:basename $0 filename" ...
- linux的~和/的区别
转自:https://zhidao.baidu.com/question/166486946.html /是目录层的分隔.表示符.只有一个/表明是root,/etc/表明是根目录下面的etc目录(当然 ...