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>
  • 相关阅读:
    无线鼠标换电池了
    Jython Interactive Servlet Console YOU WILL NEVER KNOW IT EXECLLENT!!! GOOD
    Accessing Jython from Java Without Using jythonc
    jython podcast cool isnt't it?
    Python里pycurl使用记录
    Creating an Interactive JRuby Console for the Eclipse Environment
    微软为AJAX和jQuery类库提供CDN服务
    Download A File Using Cygwin and cURL
    What is JMRI?这个是做什么用的,我真没看懂但看着又很强大
    用curl 发送指定的大cookie的http/https request
  • 原文地址:https://www.cnblogs.com/vaer/p/4339789.html
Copyright © 2011-2022 走看看