一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - mybatis注解與xml常用語句匯總

mybatis注解與xml常用語句匯總

2021-05-31 11:05wotrd Java教程

最近一直在用mybatis,由于需要使用到了動態sql,遇到了一些問題,現在來總結一下,經驗教訓。下面這篇文章主要給大家總結介紹了mybatis注解與xml常用語句的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

mybatis是一個支持普通sql查詢,存儲過程和高級映射的優秀持久層框架。mybatis消除了幾乎所有的jdbc代碼和參數的手工設置以及對結果集的檢索封裝。mybatis可以使用簡單的xml注解用于配置和原始映射,將接口和java的pojo(plain old java objects,普通的java對象)映射成數據庫中的記錄。

本文將給大家詳細介紹關于mybatis注解與xml常用語句的相關內容,下面話不多說了,來一起看看詳細的介紹吧

mybatis注解使用

1.簡單crud

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public interface usermapper {
 //查詢
 @select("select * from user where id=#{id}")
 user selectuser(int id);
 //查詢全部
 @select("select * from user")
 list<user> selectuserlist();
 //增加數據
 @insert("insert into user (name) values(#{name})")
 boolean insertuser(string name);
 //修改用戶
 @update("update user set name=#{name} where id=#{id}")
 boolean updateuser(@param("name") string name,@param("id") int id);
 //刪除用戶
 @delete("delete from user where id=#{id}")
 boolean deleteuser(int id);
}

2.一對一注解

?
1
2
3
4
5
6
7
8
9
10
@select("select * from user")
@results({
 @result(id = true,property = "id",column = "id"),//id=true 對應于主鍵
 @result(property = "uid",column = "uid"),
 @result(property = "user",column = "uid",javatype = user.class,
 one = @one(select = "com.example.dao.userdao.finduserbyid",fetchtype = fetchtype.default))
 //user 對應實體類中一對一的實體類名字,uid表示通過uid外鍵查詢user,javatype表示查詢結果
 //映射成user類型對象,one=表示一對xx fetchtype.default默認是立即加載全部查詢,使用lazy懶加載需要才查詢
})
list<user> selectuserlist();

3,一對多注解

mybatis的xml配置

1.配置resultmap

?
1
2
3
4
5
6
7
<resultmap id="baseresultmap" type="xx" >
 <id column="id" property="id" jdbctype="bigint" />
 <result column="aa" property="aa" jdbctype="varchar" />
 <result column="bb" property="bb" jdbctype="integer" />
 <result column="cc" property="cc" jdbctype="decimal" javatype="java.math.bigdecimal" />
 <result column="dd" property="dd" jdbctype="date" />
</resultmap>

2.通用sql短語

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<sql id="base_column_list" >
 aa, bb
 </sql>
 
 <sql id="where">
 <trim prefix="where" prefixoverrides="and|or">
 <if test="id != null and id != ''">
  and t.id = #{id}
 </if>
 <if test="content != null and content != ''">
  and t.content like concat('%', #{content},'%')
 </if>
 and t.app_code in
 <foreach item="item" index="index" collection="appcodes"
  open="(" separator="," close=")">
  #{item}
 </foreach>
 and t.user_id=u.id and t.removed=0
 </trim>
</sql>

3.需要驗證的插入

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<insert id="insert" parametertype="xxx"
 usegeneratedkeys="true" keycolumn="id" keyproperty="id">
 insert into xxx (
 <trim suffixoverrides=",">
  <if test="title != null and title != '' ">
   title ,
  </if>
 </trim>
 ) values (
 <trim suffixoverrides=",">
  <if test="title != null and title != '' ">
   #{title} ,
  </if>
 </trim>
 )
</insert>

4.需要驗證的更新

?
1
2
3
4
5
6
7
8
9
10
<update id="update" parametertype="xxx">
 update xxx
 <set>
  <if test="title != null and title != '' ">
   title = #{title} ,
  </if>
 </set>
 where
 id = #{id}
</update>

5.<!--批量更新ticketid和seatno-->

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<update id="xxxupdate" parametertype="java.util.list">
 update xxx
 <trim prefix="set" suffixoverrides=",">
  <trim prefix="aa =case" suffix="end,">
   <foreach collection="orders" item="item" index="index">
    <if test="item.aa !=null">
     when id=#{item.id} then #{item.aa}
    </if>
   </foreach>
  </trim>
  <trim prefix="bb =case" suffix="end,">
   <foreach collection="orders" item="item" index="index">
    <if test="item.bb !=null">
     when id=#{item.id} then #{item.bb}
    </if>
   </foreach>
  </trim>
 </trim>
 where id in
 <foreach collection="orders" index="index" item="item" separator="," open="(" close=")">
  #{item.id,jdbctype=bigint}
 </foreach>
</update>

mybatis可以使用string給數據庫int類型賦值

springboot中開啟日志

?
1
#mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.stdoutimpl

1.order by ${columnname}

這里 mybatis 不會修改或轉義字符串。note 用這種方式接受用戶的輸入,并將其用于語句中的參數是不安全的,會導致潛在的 sql 注入攻擊,因此要么不允許用戶輸入這些字段,要么自行轉義并檢驗。

2.如何使用連接池。

首先實例化連接池數據源對象,讓他實現datasourcefactory這個接口。然后實現方法。在mybatis。conf文件中設置數據連接池這個類,將數據庫連接信息放在config.properties文件中。

3.mybatis.config文件中setting和數據源的設置參數區別

會被覆蓋。

4.連接參數查詢順序

首先查詢properties文件,然后查詢resource文件,最后查詢方法參數。重復的話會被覆蓋。

5.druid連接池配置方式:

詳見官網

druiddatasourcefactory首先實行setproperties方法,然后返回設置數據源方法。drui數據源也需要在datasource中設置properties文件

6.實體類的方法不定義也可以進行映射

7.mybatis默認是事務不提交

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://segmentfault.com/a/1190000016333566

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产高清经典露脸3p | 双性总裁被调教1v1 双性双根 | 国产午夜亚洲精品不卡 | 日本草草视频 | 好硬好大好浪夹得好紧h | 久久精品在现线观看免费15 | 亚洲视频在线观看免费 | 国产精品久久久久毛片真精品 | 精品欧美日韩一区二区三区 | 爱情岛论坛自拍永久入口 | 美国女网址www呦女 美国复古性经典xxxxx | 色婷婷久 | 午夜办公室 | 国产第9页 | 好看的亚洲视频 | 欧美性黑人巨大gaysex | 无码国产成人777爽死 | 久热这里在线精品 | 男人资源站 | 亚洲不卡视频在线 | 日韩成人在线视频 | 久久亚洲精品AV成人无 | 久久九九久精品国产尤物 | 香蕉tv国产在线永久播放 | 亚洲AV无码国产精品色在线看 | 91香蕉国产在线观看免费永久 | 色婷婷婷丁香亚洲综合不卡 | 三上悠亚久久国产 | 日本h片在线 | 嫩草视频在线观看视频播放 | 亚洲一级片在线播放 | 亚洲 欧美 国产 综合 在线 | 91精品手机国产在线观 | 2020年精品国产午夜福利在线 | 欧美高清无砖专区欧美精品 | 亚洲网站在线看 | 亚洲国产欧美日韩在线一区 | 99国产热| 天天操天天射天天爽 | 99re精品在线 | 1986葫芦兄弟全集免费观看第十集 |