中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis中的映射文件怎么利用mapper接口進行加載

發布時間:2020-12-01 17:09:52 來源:億速云 閱讀:135 作者:Leah 欄目:編程語言

mybatis中的映射文件怎么利用mapper接口進行加載?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

通過 mapper 接口加載映射文件,這對于后面 ssm三大框架 的整合是非常重要的。那么什么是通過 mapper 接口加載映射文件呢?

我們首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通過 <mappers> 標簽來加載映射文件,那么如果我們項目足夠大,有很多映射文件呢,難道我們每一個映射文件都這樣加載嗎,這樣肯定是不行的,那么我們就需要使用 mapper 接口來加載映射文件

以前的做法:

mybatis中的映射文件怎么利用mapper接口進行加載  

改進做法:使用 mapper 接口來加載映射文件

1、定義 userMapper 接口

package com.ys.mapper;

 

import org.apache.ibatis.annotations.Delete;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Select;

import org.apache.ibatis.annotations.Update;

 

import com.ys.po.User;

 

public interface UserMapper {

  //根據 id 查詢 user 表數據

  public User selectUserById(int id) throws Exception;

 

  //向 user 表插入一條數據

  public void insertUser(User user) throws Exception;

   

  //根據 id 修改 user 表數據

  public void updateUserById(User user) throws Exception;

   

  //根據 id 刪除 user 表數據

  public void deleteUserById(int id) throws Exception;

}

2、在全局配置文件 mybatis-configuration.xml 文件中加載 UserMapper 接口(單個加載映射文件)

mybatis中的映射文件怎么利用mapper接口進行加載

3、編寫UserMapper.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.ys.mapper.UserMapper">

 

   

  <!-- 根據 id 查詢 user 表中的數據

    id:唯一標識符,此文件中的id值不能重復

    resultType:返回值類型,一條數據庫記錄也就對應實體類的一個對象

    parameterType:參數類型,也就是查詢條件的類型

  -->

  <select id="selectUserById"

      resultType="com.ys.po.User" parameterType="int">

    <!-- 這里和普通的sql 查詢語句差不多,后面的 #{id}表示占位符,里面不一定要寫id,寫啥都可以,但是不要空著 -->

    select * from user where id = #{id1}

  </select>

   

   

   

  <!-- 根據 id 更新 user 表的數據 -->

  <update id="updateUserById" parameterType="com.ys.po.User">

    update user u

      <!-- <set>

        <if test="username != null and username != ''">

          u.username = #{username},

        </if>

        <if test="sex != null and sex != ''">

          u.sex = #{sex}

        </if>

      </set> -->

      <trim prefix="set" suffixOverrides=",">

        <if test="username != null and username != ''">

          u.username = #{username},

        </if>

        <if test="sex != null and sex != ''">

          u.sex = #{sex},

        </if>

      </trim>

     

     where id=#{id}

  </update>

   

   

  <!-- 向 user 表插入一條數據 -->

  <insert id="insertUser" parameterType="com.ys.po.User">

    <!-- 將插入的數據主鍵返回到 user 對象中

       keyProperty:將查詢到的主鍵設置到parameterType 指定到對象的那個屬性

       select LAST_INSERT_ID():查詢上一次執行insert 操作返回的主鍵id值,只適用于自增主鍵

       resultType:指定 select LAST_INSERT_ID() 的結果類型

       order:AFTER,相對于 select LAST_INSERT_ID()操作的順序

     -->

    <selectKey keyProperty="id" resultType="int" order="AFTER">

      select LAST_INSERT_ID() 

    </selectKey>

    insert into user(username,sex,birthday,address)

      value(#{username},#{sex},#{birthday},#{address})

  </insert>

   

   

   

  <!-- 根據 id 刪除 user 表的數據 -->

  <delete id="deleteUserById" parameterType="int">

    delete from user where id=#{id}

  </delete>

   

</mapper>

4、測試

//根據id查詢user表數據

@Test

public void testSelectUserById(){

  /*這個字符串由 userMapper.xml 文件中 兩個部分構成

    <mapper namespace="com.ys.po.userMapper"> 的 namespace 的值

    <select id="selectUserById" > id 值*/

  String statement = "com.ys.mapper.UserMapper.selectUserById";

  User user = session.selectOne(statement, 1);

  System.out.println(user);

  session.close();

}

5、批量加載映射文件

<mappers>

    <!--批量加載mapper

     指定 mapper 接口的包名,mybatis自動掃描包下的mapper接口進行加載

     -->

    <package name="com.ys.mapper"/>

</mappers>

6、注意 

1、UserMapper 接口必須要和 UserMapper.xml 文件同名且在同一個包下,也就是說 UserMapper.xml 文件中的namespace是UserMapper接口的全類名

mybatis中的映射文件怎么利用mapper接口進行加載  

2、UserMapper接口中的方法名和 UserMapper.xml 文件中定義的 id 一致

3、UserMapper接口輸入參數類型要和 UserMapper.xml 中定義的 parameterType 一致

4、UserMapper接口返回數據類型要和 UserMapper.xml 中定義的 resultType 一致

看完上述內容,你們掌握mybatis中的映射文件怎么利用mapper接口進行加載的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南乐县| 翁源县| 尼勒克县| 广丰县| 蓝田县| 临沧市| 汉川市| 无锡市| 前郭尔| 漯河市| 巴马| 富锦市| 文水县| 汉川市| 美姑县| 伊通| 新民市| 呈贡县| 吉木萨尔县| 涿鹿县| 江陵县| 渑池县| 建湖县| 福州市| 土默特右旗| 赣榆县| 榆树市| 遵化市| 沁阳市| 林甸县| 若羌县| 金堂县| 永安市| 洛南县| 界首市| 延边| 晋江市| 清原| 泰州市| 靖边县| 延庆县|