ibatis 学习笔记

配置ibatis:
1) SqlMapConfig.xml

<setting>元素:

1,lazyLoadingEnabled,延迟加载(lazy loading)是一种只加载必要信息而推迟加载其他未明确请求的数据的技术,也就是说,除非绝对需要,否则应用程序加载的数据越少越好。
lazyLoadingEnabled配置项用于指定当存在相关联的已映射语句时,是否加载延迟加载。默认为true。

2,cacheModelsEnabled,数据高速缓存是一种用于提高程序性能的技术,它基于近期使用过的数据网王很快又会被用到这样一种假设,将近期使用过的数据保存在内存中。为了充分利用高速缓存技术,还必须为已映射语句配置高速缓存模型。

3,enhancementEnabled,用于指定是否使用cglib中那些已优化的类来提高延迟加载的性能。cglib是一个运行时代码生成库,ibatis可以使用它来优化其某些功能,例如JavaBean特性的设置。通识,它可以允许你延迟加载具体类,这样就不需要为了能够延迟加载某个类而特意创建一个相应的接口了。

4,useStatementNamespaces,用于告诉ibatis,在引用已映射语句时,是否需要使用限定名(qualified name)。也就是说,当你定义了SQL映射,就用该SQL映射名来先顶这条已映射语句。假设有一个名为Account的SQL映射,它包含名为 insert,update,delete,以及getAll的已映射语句。那么当你想插入一个账户且在主配置文件启用了 useStatementNamespaces配置项时,就必须调用Account.insert对这个名字来调用这条映射语句。

5,maxRequests(已废弃)
6,maxSessions(已废弃)
7,maxTransactions(已废弃)

2) SqlMap.xml
使用<select>已映射语句

## 和 $$ 的区别:

## 会把占位符变换为一个预备语句参数 ?,然后ibatis再将这个这个参数的值设置后执行该预备语句。

$$ 可以用来把值直接插入到SQL语句之中(在该SQL语句被转变为参数化语句之前)。不过容易造成SQL注入,另外过度使用还可能造成性能问题。

以下是网上找来的一些区别:
1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id"

2.$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了

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

4.$方式无法方式sql注入

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

6.一般能用#的就别用$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值