MyBatis
本文最后更新于 1803 天前,其中的信息可能已经有所发展或是发生改变。

1. 简介

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

2. 使用

  1. 配置文件
    • context.xml 放在MATE-INF目录 负责配置数据库以及数据库连接池
      image
    • 可以将鼠标悬停在标签上,可以看到标签的相应语法,?表示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
    注意语句后面的逗号
    image
  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. 批量新增(效率更高)
    image
  2. FOREACH
    image
  3. SQL复用
    image
  4. 缓存
    • 同一个session和同一个sql会直接使用缓存
    • 同一个SessionFactory 不同session 同一个sql 使用缓存
      image
    • 缓存是存储在内存中的statement对象
    • throws Exception的意思
      在方法声明部分使用,表示该方法可能产生此异常,如果在方法声明处使用了throws声明异常,则该方法产生异常也不必捕获,会直接把异常抛出到调用该方法的地方。
    • 在事务回滚时使用
    1. 在spring中配置声明式事务,(aop)
    2. 该执行回滚时抛出异常,一直往上抛,不处理
    3. 抛出异常时spring就会进行回滚了
    4. 在controller中处理,因为要获取异常信息。
作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇