javaweb框架,java框架----mybatis的使用(一)

 2023-10-04 阅读 32 评论 0

摘要:  這里我們記錄一些mybatis的一些常用知識和項目中遇到的問題總結。快樂人生的三個必要元素是,有要做的事、熱愛的事及盼望的事。 javaweb框架?? mybatis的一些知識 一、mybatis插入返回主鍵值 插入的java代碼:其中返回是當前插入的主鍵,insert方法返

  這里我們記錄一些mybatis的一些常用知識和項目中遇到的問題總結。快樂人生的三個必要元素是,有要做的事、熱愛的事及盼望的事。

javaweb框架??

mybatis的一些知識

一、mybatis插入返回主鍵值

  • 插入的java代碼:其中返回是當前插入的主鍵,insert方法返回的是影響的行數。
public void insertUserInfo() {Map<String, Object> map1 = new HashMap<>();map1.put("userName", "huhx");map1.put("age", 35);int effectRow = this.sqlSession.insert("login.insertUserInfo", map1);System.out.println(map1.get("huhxId")); // 5System.out.println(effectRow); // 1
}
  • ?語句映射的sql語句:
<insert id="insertUserInfo" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="huhxId">INSERT INTOpuser(user_name, age)VALUES(#{userName}, #{age})
</insert>

?關于mybatis的官方文檔: http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

sql語句where多條件查詢??

?二、mybatis的一個參數傳遞的異常

  • ?java代碼
public Map<String, Object> getUserInfoById(Long userId) {return this.sqlSession.selectOne("user.queryUserInfoByUserId", userId);
}
  • xml映射的代碼
<select id="queryUserInfoByUserId" parameterType="java.lang.Long" resultType="java.util.HashMap">SELECTuserId, username, password, address, birthday, sexFROMpuserWHERE1 = 1<if test="userId != null">AND userId = #{userId}</if>ORDER BYuserId DESC
</select>
  • 拋出異常
org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userId' in 'class java.lang.Long'

對于這類單個入參然后用if判斷的,mybatis有自己的內置對象。如果你在if判斷里面寫的是你的入參的對象名,那么就會拋出上述的異常。

?

三、mybatis的查詢數據包含上送的數據字段

  這里面注意幾點:一、parameterType的類型可以為縮寫的形式map;二、SELECT中可以有#{ActivityType} AS ActivityType的寫法;三、LEFT JOIN前端的FROM里面的數據需要括號。

<select id="getOtherActivity" parameterType="map" resultType="map">SELECT a.ActivitySeq,a.ActivityName,a.ActivityDes,a.ActivityBeginDate,a.ActivityEndDate,a.ActivityStatus,b.ActivityChannel,c.ToolName,c.ToolType,c.ToolDesc,#{ActivityType} AS ActivityTypeFROM(A_ACTIVITY a, A_ACTIVITY_CHANNEL b, T_TOOL c)LEFT JOIN<choose><when test="ActivityType != null and ActivityType == 2">A_CONVERT d</when><when test="ActivityType != null and ActivityType == 3">A_DISTRIBUTION d</when><when test="ActivityType != null and ActivityType == 6">A_MISSION d</when></choose>ONd.ActivitySeq = a.ActivitySeq ANDd.ToolSeq = c.ToolSeqWHEREa.ActivitySeq = b.ActivitySeq  <if test="ActivityNo != null">AND a.ActivitySeq = #{ActivityNo}</if>ORDER BYa.ActivitySeq DESC
</select>

?

四、mybatis的批量插入傳遞額外的數據

我們的需求是在批量插入的時候,有些數據是一定的,不需要在遍歷的列表里面。

public String batchInsertMap() {Map<String, Object> parmMap = new HashMap<>();parmMap.put("personId", "1");List<Map<String, String>> list = new ArrayList<>();for (int i = 0; i < 3; i ++) {Map<String, String> map = new HashMap<>();map.put("content", "comment " + i);list.add(map);}parmMap.put("list", list);// 批量插入數據int rowCounts = this.sqlSession.insert("user.insertBatchComments", parmMap);return rowCounts + "";
}

mybatis的sql語句如下:

<insert id="insertBatchComments" parameterType="map">INSERT INTO comment(person_id, content)VALUES<foreach collection="list" item="item" index="index" separator=",">(#{personId},#{item.content})</foreach>
</insert>

?

友情鏈接

?

轉載于:https://www.cnblogs.com/huhx/p/baseusejavamybatis1.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/111627.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息