寫在前面
我們都知道,不管是原生的SSM工程還是現在的SpringBoot,操作資料庫持久層都會利用Mybatis,Mybatis是家喻戶曉的資料庫操作框架,前幾年 可能還有的會用hibernate,多說一句,hibernate后來穿了一層外衣,叫JPA,不過本質還是hibernate,但是整個市場占有量Mybatis地位無可撼動,
那都知道我們都會生成一套xml檔案 去操作相應的表,新來的同事問我,這套工程里怎么沒有呢,那怎么操作資料庫呢,我笑了,,,
沒有xml檔案的mapper
脫離xml檔案還能操作資料庫嗎,答案當然是肯定的,我們一起來看下,先看一下代碼
UserMapper.java
/**
* 根據id查詢用戶資訊
* @param userId
* @return
*/
@Select("select id,user_name as userName,age from t_user where id =#{userId}")
User selectUserByUserId(@Param("userId") Integer userId);
復制代碼
上述代碼是根據用戶id查詢用戶資訊的一個功能,首先這是個java檔案,不是xml檔案,用的即是
@Select注解
該注解也是Mybatis官方的注解,目的是快速提供對資料庫簡便、快速去操作sql,只需要在mapper中方法上加入@Select(),然后在括號中寫入需要實作的sql陳述句即可,
那有人問了 ,這個是查詢,如果是插入添加呢,沒錯 insert注解
@Insert
@Insert("insert into t_user (user_name, age) values(#{userName},#{age})")
int insertUser(User user);
復制代碼
這是一個添加落庫的一個操作,將一個物件set進去 和有xml檔案的時候是一樣的操作,value必須是User物體當中的物體
看到這里,同事問了,那這個插入操作能將自增id給回傳來嗎,有xml的時候:
<!--主要是在主鍵是自增的情況下使用,添加成功后可以直接使用主鍵值,其中keyProperty的值是物件的屬性值,而不是資料庫表中的欄位名-->
<insert id="insertSelective" parameterType="com.xxx.dataobject.UserDo" keyProperty="id" useGeneratedKeys="true">
............
</insert>
復制代碼
上面我們只需要添加 keyProperty=“id” useGeneratedKeys=“true” 便可回傳自增id,那這個注解形式的怎么回傳呢
@Insert("insert into t_user (user_name, age) values(#{userName},#{age})")
@Options(useGeneratedKeys = true)
int insertUser(User user);
復制代碼
@Options(useGeneratedKeys = true)
添加該注解,即可回傳自增id,
聰明的同事看到這里說那洗掉和修改就是 @Delete @Update 了唄,哈哈 這里就不贅述了,大家可以自行百度看下,跟select insert一樣
注意點
這里說下 在查詢的時候要特別注意,不能寫select *
@Select("select * from t_user where id =#{userId}")
User selectUserByUserId(@Param("userId") Integer userId);
復制代碼
得自己去匹配屬性,xml的時候 也是根據欄位和物體屬性匹配的,這里 如果單純寫 * 框架肯定不會自動匹配到屬性的, 所以得as
同事問了如果查list怎么查,一樣的寫法 我們一起看下
@Select("select id,user_name,age from t_user where id =#{userId}")
@Results(value = {
@Result(property = "id", column = "id", javaType = INTEGER.class, jdbcType = JdbcType.INTEGER),
@Result(property = "userName", column = "user_name", javaType = String.class, jdbcType = JdbcType.VARCHAR),
@Result(property = "age", column = "age", javaType = INTEGER.class, jdbcType = JdbcType.INTEGER)})
List<User> findUserList(@Param("userId") Integer userId)
復制代碼
這樣就可以省略as 去指定屬性名稱,由注解去指定,
OK,今天關于MyBatis 增刪改查的注解介紹就到這里,,, 我們下期再見
最后
如果你覺得此文對你有一丁點幫助,點個贊,或者可以加入我的開發交流群:1025263163相互學習,我們會有專業的技術答疑解惑
如果你覺得這篇文章對你有點用的話,麻煩請給我們的開源專案點點star:https://gitee.com/ZhongBangKeJi/crmeb_java不勝感激 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/384244.html
標籤:java
上一篇:【JavaSE】初識Java語言
