Mybatis 学习记录

MYSQL limit,offset 区别

SELECT
    keyword
FROM
    keyword_rank
WHERE
    advertiserid='59'
order by
    keyword
LIMIT 2 OFFSET 1;

比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取

SELECT
    keyword
FROM
    keyword_rank
WHERE
    advertiserid='59'
ORDER BY
    keyword
LIMIT 2 ,1;

而这个SQL,limit后面是从第2条开始读,读取1条信息。

转载 : http://chinahnzhou.iteye.com/blog/1567537

Mybatis中javaType和jdbcType对应关系

JDBC Type           Java Type
CHAR                String
VARCHAR             String
LONGVARCHAR         String
NUMERIC             java.math.BigDecimal
DECIMAL             java.math.BigDecimal
BIT                 boolean
BOOLEAN             boolean
TINYINT             byte
SMALLINT            short
INTEGER             int
BIGINT              long
REAL                float
FLOAT               double
DOUBLE              double
BINARY              byte[]
VARBINARY           byte[]
LONGVARBINARY       byte[]
DATE                java.sql.Date
TIME                java.sql.Time
TIMESTAMP           java.sql.Timestamp
CLOB                Clob
BLOB                Blob
ARRAY               Array
DISTINCT            mapping of underlying type
STRUCT              Struct
REF                 Ref
DATALINK            java.net.URL[color=red][/color]

MyBatis/Ibatis中#和$的区别

1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是id,则解析成的sql为order by “id”.

2.$将传入的数据直接显示生成在sql中。如:order by userid ,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.

3.#方式能够很大程度防止sql注入。

4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,例如传入表名.

6.一般能用#的就别用$.

ps:在使用mybatis中还遇到<![CDATA[]]>的用法,在该符号内的语句,将不会被当成字符串来处理,而是直接当成sql语句,比如要执行一个存储过程。

MyBatis缓存介绍

http://blog.csdn.net/woshisap/article/details/6825714
http://my.oschina.net/KingPan/blog/280167

一级缓存 与 二级缓存

一、MyBatis的Cache配置
1、全局开关:默认是true,如果它配成false,其余各个Mapper XML文件配成支持cache也没用。


2、各个Mapper XML文件,默认是不采用cache。在配置文件加一行就可以支持cache:

3、Mapper XML文件配置支持cache后,文件中所有的Mapper statement就支持了。此时要个别对待某条,需要:

select inet_aton(#{name})

二、注意的几个细节
1、如果readOnly为false,此时要结果集对象是可序列化的。

2、在SqlSession未关闭之前,如果对于同样条件进行重复查询,此时采用的是local session cache,而不是上面说的这些cache。

3、MyBatis缓存查询到的结果集对象,而非结果集数据,是将映射的PO对象集合缓存起来。

说意义不大是在于:
a、面对一定规模的数据量,内置的cache方式就派不上用场了;
b、对查询结果集做缓存并不是MyBatis框架擅长的,它专心做的应该是sql mapper。采用此框架的Application去构建缓存更合理,比如采用OSCache、Memcached啥的。

二级缓存与 Redis

redis与Mybatis的无缝整合让MyBatis透明的管理缓存

二级缓存与 ehcache

Mybatis入门实例(二)——添加ehcache缓存支持

调用存储过程

http://www.cnblogs.com/xdp-gacl/p/4270352.html

MyBatis批量插入数据

MyBatis批量插入数据

Mybatis 原理分析

原理分析之一:从JDBC到Mybatis
原理分析之二:框架整体设计
原理分析之三:初始化(配置文件读取和解析)
原理分析之四:一次SQL查询的源码分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值