文档章节

MyBatis运用心得(2)

zhuzhuguang
 zhuzhuguang
发布于 2014/09/16 08:19
字数 372
阅读 19
收藏 0

1.重要的几个类(续)
    6)Interceptor:在众多Configuration配置类中,Interceptor比较重要,可以进行AOP编程,拦截点主要在Executor(执行某些操作时)、ParameterHandler(获得参数时)、ResultSetHandler(处理结果集时)、StatementHandler(生成Statement时)。在以后的分页处理中会用到

    7)Others:
      TypeHandler:在向prepareStatements中赋参数、从Resultset中获得参数时,对参数的转化
      ObjectFactory:从ResultSet中获得一个新的实例时,此实例由ObjectFactory创建
      TypeAlias:为特殊类起别名

    8 )SelectBuilder:Mybatis中比较特别的动态创建SQL的方式。动态创建SQL可以在XML配置文件中创建,如旧的IBatis一样,但如果是通过Mapper方式,可以使用SeletctBuilder,还是比较方便的。下面是官方文档中的例子:

private String selectPersonLike(Person p){
    BEGIN(); // Clears ThreadLocal variable
    SELECT("P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME");
    FROM("PERSON P");
    if (p.id != null) {
        WHERE("P.ID like #{id}");
    }
    if (p.firstName != null) {
        WHERE("P.FIRST_NAME like #{firstName}");
    }
    if (p.lastName != null) {
        WHERE("P.LAST_NAME like #{lastName}");
    }
    ORDER_BY("P.LAST_NAME");
    return SQL();
}


    但是需要注意的是使用#{}的参数被放入SQL中后,将使用预处理。如果需要对参数进行加工,没有通过#{},而是自己加入的话,如

WHERE("P.ID like " + transfer(p.id))

将不会使用到预处理。此时id中如果有特殊字符,将得不到校验。因此参数如果需要进行加工最好在进入SelectBuilder之前进行
除了SelectBuilder外,还有SqlBuilder,用于动态生成update、delete、save等sql,用法与SelectBuilder类似

© 著作权归作者所有

zhuzhuguang
粉丝 3
博文 24
码字总数 6185
作品 0
朝阳
程序员
私信 提问
springMVC+mybatis+mysql学习心得

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。 MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。 MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、...

magelee
2015/07/14
0
1
11月22日总结

1、把数据库档案页面套进去,写增删改查的sql。 2、写服务层和控制层前端angularjs的方法。 遇到的问题: 1.这个项目的前端service层是用angularjs的factory实现的,用的还不是很熟练,经常后...

Master__C
2016/11/22
1
0
高手问答第 165 期 —— 资深 Java 工程师带你解读 MyBatis

OSCHINA 本期高手问答(2017 年 8 月 9 日 — 8 月 15 日)我们请来了@Liuzh_533 刘增辉为大家解答关于 MyBatis 方面的问题。 刘增辉,资深 Java 工程师,热爱技术研究,乐于分享心得,活跃于...

局长
2017/08/08
8.8K
71
MyBatis使用心得(一)--- 简单介绍

Mybatis的前身是iBatis,iBatis原本就是apache的一个开源项目,2010年该项目有apache迁移到了google code,并改名为MyBatis。 1. 简介 MyBatis支持普通SQL查询,存储过程和高级映射的优秀持久...

半夏alvin
2014/04/21
0
0
SpringBoot整合mybatis的mybatis-spring的配置方式

我大概是15年初的时候,接触了SpringBoot,不过只开发了一个小项目,就没再使用过。时隔两年,SpringBoot变的热火朝天,我也不得不认真学习一下了,以下个人心得,愿对新手有所帮助。 Spring...

边鹏_尛爺鑫
2018/01/05
0
16

没有更多内容

加载失败,请刷新页面

加载更多

思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
18分钟前
0
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
42分钟前
1
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
3
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
5
0
高德API入门教程

项目需求 1、实现打开地图就能定位到中心显示标注点 2、点击标注显示保利可爱岛的详细信息 3、实现导航功能 <!doctype html><html><head> <meta charset="utf-8"> <meta http-......

我叫小糖主
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部