ibatis基础

Ibatis简介:

    ibatis是apache的一个开源项目,一个O/R Mapping解决方案,ibatis最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,ibatis是能满足你的要求又足够灵活的最简单的解决方案.官网是:http://ibatis.apache.rog/
搭建环境:
    导入相关的jar包
    配置文件:
        jdbc连接的属性文件
        总配置文件
关于每个实体的映射文件(map文件)
读取配置:
基本的CRUD操作:
如果返回结果是List. resultClass的值则是List中的类型
模糊查询:
自动主键selectKey:
使用主键自动生成(数据库生成),需要数据库支持自增长主键. 先在数据库中建立序列
selectKey的作用就是去查找序列,把序列的下一个值返回来赋给java对象的属性
优点:
其他(未验证):
开启事物,提交事物:
try{ 
    sqlMap.startTransaction(); 
    User user = new User(); 
    user.setId(new Integer(1)); 
    user.setName("Erica"); 
    user.setSex(new Integer(1)); 
    sqlMap.update("updateUser",user); 
    sqlMap.commitTransaction(); 
finally{ 
    sqlMap.endTransaction(); 
 
动态sql:
从以下地方开始,我在编写Ibatis的 sql mapping时并没有这些标签. 不知道是从Ibatis几开始支持的. 不过Mybatis中这些标签是存在并可用的: 

iBATIS OGNL 表达式

iBATIS的提供了强大的基于OGNL的表达式来消除其他元素。

  • if 语句

  • choose, when, otherwise 语句

  • where 语句

  • foreach 语句

if语句:

最常见的事情在动态SQL是有条件地包括一个where子句的一部分。例如:

<select id="findActiveBlogWithTitleLike"
           parameterType="Blog" resultType="Blog">
   SELECT * FROM BLOG
   WHERE state = 'ACTIVE.
   <if test="title != null">
      AND title like #{title}
   </if>
</select>

这条语句会提供功能的可选的文本搜索类型。如果没有传递title,那么所有激活的博客将被退回。但是,如果传递一个标题,它会寻找标题以like 给定的条件。 

可以包括多个if条件如下:

最常见的事情在动态SQL是有条件地包括一个where子句的一部分。例如:

<select id="findActiveBlogWithTitleLike"
           parameterType="Blog" resultType="Blog">
   SELECT * FROM BLOG
   WHERE state = 'ACTIVE.
   <if test="title != null">
      AND title like #{title}
   </if>
   <if test="author != null">
      AND author like #{author}
   </if>
</select>

choose, when, otherwise 语句:

iBATIS提供了一个选择的元素,它类似于Java的switch语句。这有助于选择很多种情况。

下面的例子将只搜索标题上如果提供,那么只有由作者如果已提供。如果没有提供,让我们只返回精选的博客:

<select id="findActiveBlogWithTitleLike"
           parameterType="Blog" resultType="Blog">
   SELECT * FROM BLOG
   WHERE state = 'ACTIVE.
   <choose>
      <when test="title != null">
         AND title like #{title}
      </when>
      <when test="author != null and author.name != null">
         AND author like #{author}
      </when>
      <otherwise>
         AND featured = 1
      </otherwise>
   </choose>
</select>

where 语句:

如果我们看一下前面的例子中,如果没有一个条件满足会发生什么事?最终SQL看起来像这样:

SELECT * FROM BLOG
WHERE

这会失败,但iBATIS有一个简单的改变一个简单的解决方案,让一切工作正常:

<select id="findActiveBlogLike"
           parameterType="Blog" resultType="Blog">
   SELECT * FROM BLOG
   <where>
      <if test="state != null">
         state = #{state}
      </if>
      <if test="title != null">
         AND title like #{title}
      </if>
      <if test="author != null>
         AND author like #{author}
      </if>
   </where>
</select>

where元素知道只有插入WHERE ,如果有一个由含标签返回的任何内容。此外,如果该内容开头AND或OR,它知道剥离其关闭。

foreach语句:

foreach元素是非常强大的,并允许你指定一个集合,声明可以在元素的体内可用于项目和索引变量。

它也允许你指定打开和关闭的字符串,并添加一个分隔符放置在迭代之间。可以建立一个IN条件如下:

<select id="selectPostIn" resultType="domain.blog.Post">
   SELECT *
   FROM POST P
   WHERE ID in
   <foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
         #{item}
   </foreach>
</select>
posted @ 2015-03-15 15:02  vaer  阅读(442)  评论(0编辑  收藏  举报