国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Mybatis 開發注解快速入門

Mybatis 開發注解快速入門

2020-07-07 13:15堅守一輩子的幸福 JAVA教程

mybatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。這篇文章主要介紹了Mybatis 開發注解快速入門的相關資料,需要的朋友可以參考下

快速普及

1、mybatis是什么

      mybatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。

      MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。
Mybatis實現了接口綁定,使用更加方便。

對象關系映射的改進,效率更高

MyBatis采用功能強大的基于OGNL的表達式來消除其他元素。

2、功能架構

Mybatis 開發注解快速入門

3、執行流程

Mybatis 開發注解快速入門

原理詳解:

       MyBatis應用程序根據XML配置文件創建SqlSessionFactory,SqlSessionFactory在根據配置,配置來源于兩個地方,一處是配置文件,一處是Java代碼的注解,獲取一個SqlSession。SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession實例直接運行映射的sql語句,完成對數據的增刪改查和事務提交等,用完之后關閉SqlSession。

下面看下本文介紹重點mybatis 簡單注解

關鍵注解詞 :

@Insert : 插入sql , 和xml insert sql語法完全一樣

@Select : 查詢sql, 和xml select sql語法完全一樣

@Update : 更新sql, 和xml update sql語法完全一樣

@Delete : 刪除sql, 和xml delete sql語法完全一樣

@Param : 入參

@Results : 結果集合

@Result : 結果

1、領域模型 :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class UserDO {
private Long id;
private String userName;
private Date gmtCreate;
private Date gmtModified;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getGmtCreate() {
return gmtCreate;
}
public void setGmtCreate(Date gmtCreate) {
this.gmtCreate = gmtCreate;
}
public Date getGmtModified() {
return gmtModified;
}
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
}

2、接口定義 :

?
1
2
3
4
5
6
7
8
9
10
public interface UserDAO {
@Insert("INSERT INTO t_user(gmt_create, gmt_modified, user_name) values(now(), now(), #{userName})")
public int insert(@Param("userName") String userName);
  @Select("SELECT * FROM t_user WHERE id = #{id}")
public UserDO selectByUserId(@Param("id") Long id) ;
@Update("UPDATE t_user SET gmt_modified = now(), user_name = #{userName} WHERE id = #{id}")
public int udpateById(@Param("userName") String userName, @Param("id") Long id) ;
@Delete("DELETE FROM t_user WHERE id = #{id}")
public int udpateById(@Param("id") Long id) ;  
}

3、mybatis xml config:

?
1
2
3
4
5
6
7
8
<!-- mybatis 注解 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="mysqlBASE" /> <!--這里只需要配置你自己的數據源即可-->
</bean>
  <bean id="userDAO" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.yuanmeng.userDAO" /> <!--mybatis接口-->
     <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <!--sqlSession工廠-->
  </bean>

這樣,我們就完成了mybatis 使用注解的demo, 是不是覺得很簡單 ~~

如果熟悉mybatis xml的話, 大多數情況下, 我們需要將數據庫表的字段名 與 class DO 映射起來。mybatis注解也提供了映射的功能, 語法大同小異。

?
1
2
3
@Select("SELECT * FROM tsp_template WHERE id = #{id}")
@Results(value = { @Result(property = "userName", column = "user_name", javaType = String.class, jdbcType = JdbcType.VARCHAR) })
public UserDO selectById(@Param("id") Long id);

當然, 上述只是再不能簡單的sql了。想想如果我們有這種需求, 更新用戶信息, 希望能更新指定的屬性值, 換而言之, 像xml 一樣動態生成SQL 。 那我們就不能簡單粗暴使用 @update 注解 。好在 強大的mybatis 也提供了動態SQL的組裝。

動態SQL

 對應關系如下

@Insert :@InsertProvider
@Select :@SelectProvider
@Update :@UpdateProvider
@Delete :@DeleteProvider

四個provider注解標識 使用了動態SQL, 使用語法格式 :

?
1
@UpdateProvider(type = UserProvider.class, method = "updateSQL")

如何構造動態SQL

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class UserProvider {
/**
* udpate
* @param UserDO userDO
* @return
*/
public String updateSQL(final UserDO userDO) {
return new SQL() {
{
UPDATE("t_user");
SET("gmt_modified = now()");
if (userDO.getUserName() != null) {
SET("user_name = #{userName}");
}
WHERE("id = #{id}}");
}
}.toString();
}
}

本文提到的知識點比較基礎, 如需深入了解見官網文檔or看下源碼。

總結 :

  1、xml 和 注解 如何選擇 ? 因人而異, 每個人的擼碼各有各的習慣, xml 、注解各有優缺點, xml的缺點 : 當模型屬性有變更時, 需要從DO改到DAO改到xml, 想想就蛋疼了~ xml也有優點 , SQL片段復用方便, 語法平易近人, 不像注解, 構造個動態語句, 還得建個類, 而且當一段SQL被多處引用時, 代碼就顯得冗余了, 這時必須借助 xml來抽取共同使用。吐槽了下mybatis注解, 那注解豈不是毫無用處。 no , mybatis 適合模型屬性經常變更的場景, 因為可以結合反射, 正則匹配動態構造SQL(純粹瞎歪歪, 個人想法, 應該可以實現, 改天擼一發)。可以說, mybatis的注解 優點 很好彌補了 xml缺點。兩者互補~

以上所述是小編給大家介紹的Mybatis 開發注解快速入門,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/chenmo-xpw/p/6099951.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩和的一区二在线 | 国产精品欧美一区二区三区不卡 | 青青久视频 | 亚洲精品久久久久久久久久久 | 紧缚调教一区二区三区视频 | av中文字幕在线 | 欧美激情在线观看 | 国产一区久久 | 亚洲精品专区 | 国产成人精品一区二区三区网站观看 | 亚洲一区在线观看视频 | 久久69精品久久久久久久电影好 | 日韩精品在线一区 | 亚洲精品久久久久久下一站 | 亚洲青青草 | 亚洲日韩中文字幕一区 | 激情久久久 | 亚洲天堂网站 | 亚洲另类视频 | 久久se精品一区精品二区 | 中文字幕高清在线 | 精品在线播放 | 精品久久久久久久 | 亚洲精彩视频 | 伊人春色在线播放 | 精品免费视频 | 久久国产一区二区 | 精品国产视频 | 一区二区三区欧美在线 | 成人av一级| 欧美久久久久久久久久久久久久 | 亚洲精品一区二三区不卡 | 欧美中文在线 | 久久午夜精品 | 久9re热视频这里只有精品 | 久久国产精品一区二区 | av在线日韩| 久久精品无码一区二区日韩av | 国产精品日本欧美一区二区三区 | 蜜桃av一区二区三区 | 国产亚洲一区二区三区在线观看 |