国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Mybatis 開發(fā)注解快速入門

2019-11-26 13:31:27
字體:
供稿:網(wǎng)友

快速普及

1、mybatis是什么

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

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

對象關(guān)系映射的改進,效率更高

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

2、功能架構(gòu)

這里寫圖片描述

3、執(zhí)行流程

這里寫圖片描述

原理詳解:

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

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

關(guān)鍵注解詞 :

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

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

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

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

@Param : 入?yún)?/p>

@Results : 結(jié)果集合

@Result : 結(jié)果

1、領(lǐng)域模型 :

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、接口定義 :

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:

<!-- mybatis 注解 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="mysqlBASE" /> <!--這里只需要配置你自己的數(shù)據(jù)源即可--></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的話, 大多數(shù)情況下, 我們需要將數(shù)據(jù)庫表的字段名 與 class DO 映射起來。mybatis注解也提供了映射的功能, 語法大同小異。

@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 一樣動態(tài)生成SQL 。 那我們就不能簡單粗暴使用 @update 注解 。好在 強大的mybatis 也提供了動態(tài)SQL的組裝。

動態(tài)SQL

 對應(yīng)關(guān)系如下

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

四個provider注解標識 使用了動態(tài)SQL, 使用語法格式 :

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

如何構(gòu)造動態(tài)SQL

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();}}

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

總結(jié) :

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴塘县| 本溪市| 十堰市| 拜城县| 巩留县| 荃湾区| 晋宁县| 宁化县| 富裕县| 天柱县| 木兰县| 宁阳县| 沾益县| 惠来县| 吉木萨尔县| 侯马市| 满洲里市| 化德县| 黄陵县| 盐山县| 五家渠市| 綦江县| 沂源县| 海兴县| 界首市| 琼结县| 金堂县| 郁南县| 潜江市| 西华县| 绵竹市| 宁化县| 新建县| 福州市| 保德县| 横峰县| 华阴市| 香港| 贺兰县| 丰镇市| 日照市|