> MyBatis - Yuyy
Yuyy
Yuyy
MyBatis

1. 简介

  • 原名叫ibatis
  • 底层是对JDBC封装
  • 数据访问层框架

2. 使用

  1. 配置文件
    • context.xml 放在MATE-INF目录 负责配置数据库以及数据库连接池
      http://yuyy.info/image/e5fad3a8-58d5-437a-ad35-11c2fe0b60ec.png
    • 可以将鼠标悬停在标签上,可以看到标签的相应语法,?表示0个或一个,顺序也得遵守
  2. 事务回滚
    • 一般操作一个session 只要session没关闭 之前的所有执行的sql都是一个事务 在关闭之前可以进行事务回滚,session.rollback
    • 执行sql时 如果发生异常,应执行session.rollback();
    • 多条sql操作才需要回滚

3. 动态SQL

  1. IF
<select id="findActiveBlogLike" parameterType="Blog" resultType="Blog">
    SELECT * FROM BLOG WHERE 1=1  //因为if后添加的sql 时and开头 所以这必须加一个条件 (1=1也行)
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
</select>
  1. WHERE
    如果where里返回内容 将生成where关键字 如果返回的第一个内容时以and或者or开头的,将自动去掉and或者or
<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.name != null">
            AND author_name like #{author.name}
        </if>
    </where>
</select>
  1. SWITCH
<select id="findActiveBlogLike" parameterType="Blog" resultType="Blog">
    SELECT * FROM BLOG
    <where>
        <choose>
            <when test="title != null">
                AND title like #{title}
            </when>
            <when test="author != null and author.name != null">
                AND author_name like #{author.name}
            </when>
            <otherwise>
                AND featured = 1
            </otherwise>
        </choose>
    </where>
</select>
  1. SET
    注意语句后面的逗号
    http://yuyy.info/image/c07afae6-fb4b-4e89-81a3-b6f5348e4956.png
  2. trim
//<where></where>
<trim prefix="WHERE" prefixOverrides="AND |OR ">
...
</trim>
//<set></set>
<trim prefix="SET" suffixOverrides=",">
...
</trim>
  1. 修改字段
<bind name="money" value="'$'+money"/>
  1. 模糊查询
<bind name="money" value="'%'+money+'%'"/>
  1. 批量新增(效率更高)
    http://yuyy.info/image/31992538-cf26-48eb-9214-befad6ba767b.png
  2. FOREACH
    http://yuyy.info/image/746ce009-ee0b-4646-87f7-863dd14ad9a7.png
  3. SQL复用
    http://yuyy.info/image/bc0a6210-5f28-468b-88d7-81163fcede6c.png
  4. 缓存
    • 同一个session和同一个sql会直接使用缓存
    • 同一个SessionFactory 不同session 同一个sql 使用缓存
      http://yuyy.info/image/2dc3c522-b5c9-4b7f-aa89-0e1f9ada1eb1.png
    • 缓存是存储在内存中的statement对象
    • throws Exception的意思
      在方法声明部分使用,表示该方法可能产生此异常,如果在方法声明处使用了throws声明异常,则该方法产生异常也不必捕获,会直接把异常抛出到调用该方法的地方。
    • 在事务回滚时使用
    1. 在spring中配置声明式事务,(aop)
    2. 该执行回滚时抛出异常,一直往上抛,不处理
    3. 抛出异常时spring就会进行回滚了
    4. 在controller中处理,因为要获取异常信息。

发表评论

textsms
account_circle
email

Yuyy

MyBatis
1. 简介 原名叫ibatis 底层是对JDBC封装 数据访问层框架 2. 使用 配置文件 context.xml 放在MATE-INF目录 负责配置数据库以及数据库连接池 可以将鼠标悬停在标签上,可以看到标…
扫描二维码继续阅读
2020-01-03
友情链接
标签
归档
近期文章
分类
近期文章