zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    ping-tool
    yum 安装 5.6
    音视频编辑
    图表
    VC2013设置输出文件目录
    hdu 4679 Terrorist’s destroy 树形DP
    poj 3580 SuperMemo splay tree(重口味)
    hdu 1890 Robotic Sort splaytree+懒惰标记
    bzoj 1588 [HNOI2002]营业额统计 splay tree
    bzoj 1503 [NOI2004]郁闷的出纳员 splay tree
  • 原文地址:https://www.cnblogs.com/vaer/p/4339789.html
Copyright © 2011-2022 走看看