欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis Mapper映射文件配置的實現

 更新時間:2025年05月22日 09:31:28   作者:一名技術極客  
本文主要介紹了MyBatis Mapper映射文件配置的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

常用屬性標簽

namespace的作用

在MyBatis中,Mapper中的namespace用于綁定Dao接口的,即面向接口編程。 namespace屬性的值要和對應的Mapper接口的全限定名保持一致。

namespace的好處在于當使用了namespace之后就可以不用寫接口實現類,業(yè)務邏輯會直接通過這個綁定尋找到相對應的SQL語句進行對應的數據處理。

常用標簽介紹

  • insert – 映射插入語句
  • update – 映射更新語句
  • delete – 映射刪除語句
  • select – 映射查詢語句
  • sql – 可被其他語句引用的可重用語句塊
  • resultMap - 確定實體類屬性與表中字段對應關系

parametetType屬性

<insert>,<update>,<select>,<delete>標簽中,可以通過parameterType指定輸入參數的類型,類型可以是簡單類型、hashmap、pojo的包裝類型。

parameterType屬性是可以省略的,MyBatis框架可以根據SqlSession接口中方法的參數來判斷輸入參數的實際數據類型。

resultType屬性

  • resultType屬性存在標簽.負責將查詢結果進行映射。
  • resultType屬性可以指定一個基本類型也可以是一個實體類類型。
  • resultType屬性無法與resultMap屬性同時出現。

resultMap

MyBatis框架中是根據表中字段名到實體類定位同名屬性的.如果出現了實體類屬性名與表中字段名不一致的情況,則無法自動進行對應.此時可以使用resultMap來重新建立實體類與字段名之間對應關系

<!--mybatis-config文件配置,可以為一些類定義別名-->
<!--<typeAliases>
    <typeAlias type="com.xyxy.pojo.Emp" alias="emp"></typeAlias>
</typeAliases>-->
<!-- type屬性里面使用別名就可以不用全路徑 -->
<resultMap id="empMapper" type="emp">
    <id property="empId" column="emp_id"></id>
    <result property="empName" column="emp_name"></result>
    <result property="empSalary" column="emp_salary"></result>
</resultMap>
<select id="findAll" resultMap="empMapper">
    select * from t_emp
</select>

sql

  • sql:里面可以寫入一個共同的sql代碼,用于提取重復的代碼。 要使用該代碼的時候就直接使用標簽
  • id:為提取的sql代碼,取一個id,起標識作用
<!-- 公共代碼 -->
<sql id="select">
    <!-- select * from t_emp -->
    select emp_id empId,emp_name empName,emp_salary empSalary from t_emp
</sql>
    
<!--select標簽的id與接口的方法名對應,resultType和返回結果封裝的Bean一致-->
<select id="findById" resultType="com.xyxy.pojo.Emp">
    <!-- include:用于加載提取公共的sql語句,與<sql>標簽對應
           refid:填寫<sql>標簽中的id屬性-->
    <include refid="select"></include>
    where emp_id=#{empId}
</select>
    
<select id="findByIdOrName" parameterType="Emp" resultType="emp">
    <!-- 引入公共代碼 -->
    <include refid="select"></include>
    <!-- where標簽:一個where條件語句,通常和<if>標簽混合使用 -->
    <where>
        <!-- if標簽:執(zhí)行一個判斷語句,成立才會執(zhí)行標簽體內的sql語句,test:寫上條件判斷語句
        注意:這里每一個if前面都盡量加上and,如果你是第一個條件,框架會自動幫你把and截取,
            如果是第二個if就不能省略and-->
        <if test="empId != null and empId != ''">
            and emp_id=#{empId}
        </if>
        <if test="empName != null and empName != ''">
            and emp_name like '%${empName}%'
        </if>
    </where>
</select>

數據輸入

在SQL語句中獲取參數

#{}的方式

Mybatis會在運行過程中,把配置文件中的SQL語句里面的 #{}轉換為? 占位符,發(fā)送給數據庫執(zhí)行。

配置文件中的SQL

<delete id="deleteEmployeeById" parameterType="int">
    delete from t_emp where emp_id=#{empId}
</delete>

實際執(zhí)行的SQL

delete from t_emp where emp_id=?

${}的方式

Mybatis會在運行過程中, 將來會根據${}拼字符串

配置文件中的SQL語句

<select id="selectEmployeeByName" resultType="com.xyxy.pojo.Employee">
    select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_name like '%${empName}%'
</select>

Mapper接口

注意:由于Mapper接口中方法名是作為SQL語句標簽的id,不能重復,所以Mapper接口中不能出現重名的方法,不允許重載!

  • #{}:采用預編譯方式,可以防止SQL注入

  • ${}:采用直接賦值方式,無法阻止SQL注入攻擊

單個簡單類型參數

Mapper接口中的抽象方法

Employee selectEmployee(Integer empId);

映射配置文件:此時SQL語句中獲取參數#

<select id="selectEmployee" resultType="com.xyxy.pojo.Employee">
    select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_id=#{empId}
</select>

多個簡單類型參數

Mapper接口中抽象方法: 此時每個方法需要使用Param注解命名

int updateEmployee(@Param("empId") Integer empId,@Param("empSalary") Double empSalary);

映射配置文件: 此時SQL語句中獲取參數#

<update id="updateEmployee">
    update t_emp set emp_salary=#{empSalary} where emp_id=#{empId}
</update>

實體類類型參數

Mapper接口中抽象方法:

int insertEmployee(Employee employee);

映射配置文件: 此時SQL語句獲取參數#{getXXX方法對應的名字,首字母改小寫}

<insert id="insertEmployee">
    insert into t_emp(emp_name,emp_salary) values(#{empName},#{empSalary})
</insert>

Mybatis會根據#{}中傳入的數據,加工成getXxx()方法,通過反射在實體類對象中調用這個方法,從而獲取到對應的數據。填充到#{}這個位置。

Map類型參數

Mapper接口中抽象方法:

int updateEmployeeByMap(Map<String, Object> paramMap);

映射配置文件: 此時SQL語句獲取參數#

<update id="updateEmployeeByMap">
    update t_emp set emp_salary=#{empSalaryKey} where emp_id=#{empIdKey}
</update>

數據輸出

數據輸出是針對查詢數據的方法返回查詢結果

返回單個簡單類型數據

Mapper接口中的抽象方法: 方法的返回值是簡單數據類型

/**
* 統(tǒng)計員工數量
* @return
*/
Long selectEmployeeCount();

映射配置文件: 此時標簽的resultType的類型對應抽象方法的返回值類型

<!--
        返回簡單類型:
        resultType表示結果類型:結果集返回的類型,要和Mapper接口中對應的方法的返回值類型保持一致
    -->
<select id="selectEmployeeCount" resultType="long">
    select count(emp_id) from t_emp
</select>

返回一條數據

返回實體類對象

Mapper接口中的抽象方法: 方法的返回值是POJO類型

Employee selectEmployee(Integer empId);

映射配置文件: 此時標簽的resultType的類型對應抽象方法的返回值類型的全限定名

<!-- 編寫具體的SQL語句,使用id屬性唯一的標記一條SQL語句 -->
<!-- resultType屬性:指定封裝查詢結果的Java實體類的全類名 -->
<select id="selectEmployee" resultType="com.xyxy.pojo.Employee">
    <!-- Mybatis負責把SQL語句中的#{}部分替換成“?”占位符 -->
    <!-- 給每一個字段設置一個別名,讓別名和Java實體類中屬性名一致 -->
    select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_id=#{maomi}
</select>

通過給數據庫表字段加別名,讓查詢結果的每一列都和Java實體類中屬性對應起來。

增加全局配置自動映射駝峰命名規(guī)則 在Mybatis的核心配置文件中做下面的配置,select語句中可以不給字段設置別名

<!-- 在全局范圍內對Mybatis進行配置 -->
<settings>
    <!-- 具體配置 -->
    <!-- 從org.apache.ibatis.session.Configuration類中可以查看能使用的配置項 -->
    <!-- 將mapUnderscoreToCamelCase屬性配置為true,表示開啟自動映射駝峰式命名規(guī)則 -->
    <!-- 規(guī)則要求數據庫表字段命名方式:單詞_單詞 -->
    <!-- 規(guī)則要求Java實體類屬性名命名方式:首字母小寫的駝峰式命名 -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

返回Map類型

適用于SQL查詢返回的各個字段綜合起來并不和任何一個現有的實體類對應,沒法封裝到實體類對象中。能夠封裝成實體類類型的,就不使用Map類型。

Mapper接口中的抽象方法: 方法的返回值是Map類型

/**
* 根據empId查詢員工信息,并且將結果集封裝到Map中
* @param empId
* @return
*/
Map selectEmployeeMapByEmpId(Integer empId);

映射配置文件: 此時標簽的resultType的類型為map

<!--
        返回Map類型:
        resultType表示結果類型: 就是Map的全限定名或者別名
    -->
<select id="selectEmployeeMapByEmpId" resultType="map">
    select * from t_emp where emp_id=#{empId}
</select>

返回多行數據

返回List<POJO>

查詢結果返回多個實體類對象,希望把多個實體類對象放在List集合中返回。此時不需要任何特殊處理,在resultType屬性中還是設置實體類類型即可。

Mapper接口中的抽象方法: 方法的返回值是List<POJO>

List<Employee> selectAll();

映射配置文件: 此時標簽的resultType的類型為POJO類的全限定名

<!-- List<Employee> selectAll(); -->
<select id="selectAll" resultType="com.xyxy.pojo.Employee">
    select emp_id empId,emp_name empName,emp_salary empSalary from t_emp
</select>

返回List<Map>

查詢結果返回多個Map對象,希望把多個Map對象放在List集合中返回。此時不需要任何特殊處理,在resultType屬性中還是設置map即可。

Mapper接口中的抽象方法: 方法的返回值是List<Map>類型

List<Map> selectAllMap();

映射配置文件:此時標簽的resultType的類型為map

<select id="selectAllMap" resultType="map">
    select emp_id empId,emp_name empName,emp_salary empSalary
    from t_emp
</select>

返回自增主鍵

使用場景

例如:保存訂單信息。需要保存Order對象和List<OrderItem>。其中,OrderItem對應的數據庫表,包含一個外鍵,指向Order對應表的主鍵。

在保存List<OrderItem>的時候,需要使用下面的SQL:

insert into t_order_item(item_name,item_price,item_count,order_id) values(...)

這里需要用到的order_id,是在保存Order對象時,數據庫表以自增方式產生的,需要特殊辦法拿到這個自增的主鍵值。

實現方案

Mapper接口中的抽象方法:

int insertEmployee(Employee employee);

映射配置文件:

<!-- int insertEmployee(Employee employee); -->
<!-- useGeneratedKeys屬性字面意思就是“使用生成的主鍵” -->
<!-- keyProperty屬性可以指定主鍵在實體類對象中對應的屬性名,Mybatis會將拿到的主鍵值存入這個屬性 -->
<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="empId">
    insert into t_emp(emp_name,emp_salary)
    values(#{empName},#{empSalary})
</insert>

junit測試代碼:

@Test
public void testSaveEmp() {

    EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
    
    Employee employee = new Employee();
        
    employee.setEmpName("john");
    employee.setEmpSalary(666.66);
    
    employeeMapper.insertEmployee(employee);
    //打印自動返回存入對象的主鍵值
    System.out.println("employee.getEmpId() = " + employee.getEmpId());

}

注意:

Mybatis是將自增主鍵的值設置到實體類對象中,而不是以Mapper接口方法返回值的形式返回。

另一種做法

<insert id="insertEmployee">
    insert into t_emp (emp_name,emp_salary) values (#{empName},#{empSalary})
    <!--
            keyColumn="emp_id"表示要查詢的主鍵的列名
            keyProperty="empId"表示將查詢到的主鍵值賦給JavaBean的哪個屬性
            resultType="int"表示查詢的結果類型
            order="AFTER" 表示這個查詢是執(zhí)行在insert之前還是之后呢?如果為AFTER表示之后,BEFORE表示之前
        -->
    <selectKey keyColumn="emp_id" keyProperty="empId" resultType="int" order="AFTER">
        select last_insert_id()
    </selectKey>
</insert>

不支持自增主鍵的數據庫怎么獲取主鍵值

而對于不支持自增型主鍵的數據庫(例如 Oracle),則可以使用 selectKey 子元素:selectKey元素將會首先運行,id 會被設置,然后插入語句會被調用

<insert id="insertEmployee"
parameterType="com.atguigu.mybatis.beans.Employee"  
databaseId="oracle">
<selectKey order="BEFORE" keyProperty="id"
resultType="integer">
select employee_seq.nextval from dual
</selectKey>    
insert into orcl_employee(id,last_name,email,gender) values(#{id},#{lastName},#{email},#{gender})
</insert>

或者:

<insert id="insertEmployee"
parameterType="com.atguigu.mybatis.beans.Employee"  
databaseId="oracle">
<selectKey order="AFTER" keyProperty="id"
resultType="integer">
select employee_seq.currval from dual
</selectKey>    
insert into orcl_employee(id,last_name,email,gender) values(employee_seq.nextval,#{lastName},#{email},#{gender})
</insert>

結果集的字段和實體類屬性對應關系

自動映射

Mybatis在做結果集與POJO類的映射關系的時候,會自動將結果集的字段名與POJO的屬性名(其實是和getXXX方法)進行對應映射,結果集的數據會自動映射給POJO對象中同名的屬性;
所以當我們遇到表的字段名和POJO屬性名不一致的情況,我們可以在編寫查詢語句的時候,給結果集的字段取別名,讓別名與POJO的屬性名一致以保證結果集的正確映射

全局配置自動識別駝峰式命名規(guī)則

因為我們表中字段的命名規(guī)則采用_,而POJO的屬性名命名規(guī)則采用駝峰命名法,所以導致我們在執(zhí)行查詢語句的時候總是要對查詢的字段取別名,以確保正確地進行結果集映射

Mybatis框架當然也注意到了這個問題,所以它提供了一種自動識別駝峰命名規(guī)則的配置,我們只要做了該配置,那么全局的所有查詢語句的執(zhí)行都會自動識別駝峰命名規(guī)則

Mybatis全局配置文件加入如下配置:

<!-- 使用settings對Mybatis全局進行設置 -->
<settings>
    <!-- 將xxx_xxx這樣的列名自動映射到xxXxx這樣駝峰式命名的屬性名 -->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

SQL語句中可以不使用別名:

<!-- Employee selectEmployee(Integer empId); -->
<select id="selectEmployee" resultType="com.atguigu.mybatis.entity.Employee">
    select emp_id,emp_name,emp_salary from t_emp where emp_id=#{empId}
</select>

手動映射

使用resultMap標簽手動指定結果集字段與POJO屬性的映射關系,可以非常靈活地進行結果集的映射

<!--
        手動映射:通過resultMap標簽配置映射規(guī)則
            1. id屬性:表示這個手動映射規(guī)則的唯一表示
            2. type屬性: 表示這個手動映射規(guī)則是將結果集映射給哪個類的對象,就是JavaBean類的全限定名
        resultMap標簽中的子標簽就是一一指定映射規(guī)則:
            1. id標簽:指定主鍵的映射規(guī)則
            2. result標簽:指定非主鍵的映射規(guī)則
        id標簽和result標簽的屬性:
            1. column:要進行映射的結果集的字段名
            2. property:要進行映射的JavaBean的屬性名
    -->
<resultMap id="EmployeeInfoMap" type="com.xyxy.pojo.EmployeeInfo">
    <id column="emp_id" property="id"/>
    <result column="emp_name" property="name"/>
    <result column="emp_salary" property="salary"/>
</resultMap>
<!--
        在select標簽中通過resultMap屬性來指定使用哪個手動映射規(guī)則
    -->
<select id="selectEmployeeInfoByEmpId" resultMap="EmployeeInfoMap">
select * from t_emp where emp_id=#{empId}
</select>

多表關聯查詢

物理建模

CREATE TABLE `t_customer` (
`customer_id` INT NOT NULL AUTO_INCREMENT,
`customer_name` CHAR(100),
PRIMARY KEY (`customer_id`)
);
CREATE TABLE `t_order` (
`order_id` INT NOT NULL AUTO_INCREMENT,
`order_name` CHAR(100),
`customer_id` INT,
PRIMARY KEY (`order_id`)
);
INSERT INTO `t_customer` (`customer_name`) VALUES ('c01');
INSERT INTO `t_customer` (`customer_name`) VALUES ('c02');
INSERT INTO `t_order` (`order_name`, `customer_id`) VALUES ('o1', '1');
INSERT INTO `t_order` (`order_name`, `customer_id`) VALUES ('o2', '1');
INSERT INTO `t_order` (`order_name`, `customer_id`) VALUES ('o3', '1');
INSERT INTO `t_order` (`order_name`, `customer_id`) VALUES ('o4', '2');
INSERT INTO `t_order` (`order_name`, `customer_id`) VALUES ('o5', '2');

t_customer表和t_order表示一對多關系,反之t_order表和t_customer表可以看成一對一或者多對一關系

一對一或多對一查詢

任務

根據訂單ID查詢出訂單信息,并且查詢出該訂單所屬的顧客信息,將查詢到的結果集封裝到Order對象中

POJO封裝結果集

public class Order {
    private Integer orderId;
    private String orderName;
    //表示Order和Customer的對一關系
    private Customer customer;
}

public class Customer {
    private Integer customerId;
    private String customerName;
}

接口方法

public interface OrderMapper{
    Order findByOrderId(Integer orderId);
}

在全局配置文件中配置

<!--全局配置自動映射駝峰命名-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

    <!--實體類取別名-->
    <typeAliases>
        <package name="com.xyxy.pojo"/>
    </typeAliases>
        
    <!-- Mapper注冊:指定Mybatis映射文件的具體位置 -->
    <!-- mappers標簽:配置一個具體的Mapper映射文件 -->
    <!-- resource屬性:指定Mapper映射文件的實際存儲位置,這里需要使用一個以類路徑根目錄
    <mappers>
        <!-- 包下的所有Mapper配置文件將被自動加載、注冊,比較方便。 -->
        <package name="com.xyxy.mapper"/>
    </mappers>

映射配置文件OrderMapper.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.xyxy.mapper.OrderMapper">
    <resultMap id="order" type="Order" autoMapping="true">
        <!-- autoMapping屬性設置為true開啟自動映射 -->
        <association property="customer" javaType="Customer">
            <id column="customer_id" property="customerId"></id>
            <result column="customer_name" property="customerName"></result>
        </association>
    </resultMap>
    <select id="findByOrderId" resultMap="order">
        select * from t_order o left join t_customer c on o.customer_id=c.customer_id where order_id=#{orderId}
    </select>
</mapper>

一對多查詢

任務

根據客戶的ID查詢客戶信息,并且查詢出該客戶的所有訂單信息,將查詢的訂單信息結果集封裝到Customer對象中

POJO封裝結果集

public class Customer {
    private Integer customerId;
    private String customerName;
    //客戶和訂單的一對多關系
    private List<Order> orderList;
}

public class Order {
    private Integer orderId;
    private String orderName;
}

CustomerMapper接口中的抽象方法

public interface CustomerMapper {
    Customer findCustomerAndOrders(Integer customerId);
}

映射配置文件CustomerMapper.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.xyxy.mapper.CustomerMapper">
    <resultMap id="customer" type="Customer" >
        <id column="customer_id" property="customerId"/>
        <result column="customer_name" property="customerName"/>
        <collection property="orderList" ofType="Order" autoMapping="true">
            <!--
            進行一對多映射,使用collection標簽
                ofType屬性指的是orderList的泛型
            -->
        </collection>
    </resultMap>
    <select id="findCustomerAndOrders" resultMap="customer">
        SELECT * FROM t_customer c,t_order o WHERE o.customer_id=c.customer_id AND c.customer_id=#{customerId}
    </select>
</mapper>

到此這篇關于MyBatis Mapper映射文件配置的實現那的文章就介紹到這了,更多相關MyBatis Mapper映射文件配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java導出pdf文件的詳細實現方法

    java導出pdf文件的詳細實現方法

    這篇文章主要介紹了java導出pdf文件的詳細實現方法,包括制作模板、獲取中文字體文件、實現后端服務以及前端發(fā)起請求并生成下載鏈接,需要的朋友可以參考下
    2025-03-03
  • mybatis update更新字段的使用操作

    mybatis update更新字段的使用操作

    這篇文章主要介紹了mybatis update更新字段的使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • springboot?注解方式批量插入數據的實現

    springboot?注解方式批量插入數據的實現

    一次請求需要往數據庫插入多條數據時,可以節(jié)省大量時間,本文主要介紹了springboot?注解方式批量插入數據,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java8 stream自定義分組求和并排序的實現

    java8 stream自定義分組求和并排序的實現

    這篇文章主要介紹了java8 stream自定義分組求和并排序的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • JavaGUI常用窗體組件與面板使用詳解

    JavaGUI常用窗體組件與面板使用詳解

    GUI即圖形用戶界面,它是基于圖形的界面,windows就是一個圖形用戶界面的操作系統(tǒng),而DOS是基于命令提示符的操作系統(tǒng),GUI編程就是編出一個圖形用戶界面的軟件,它使用圖形的方式,以菜單、按鈕、表示、圖文框等標準界面元素組成的用戶操作界面
    2023-03-03
  • 教你如何更改IDEA項目的路徑

    教你如何更改IDEA項目的路徑

    這篇文章主要介紹了教你如何更改IDEA項目的路徑,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • Java經典面試題最全匯總208道(二)

    Java經典面試題最全匯總208道(二)

    這篇文章主要介紹了Java經典面試題最全匯總208道(二),本文章內容詳細,該模塊分為了六個部分,本次為第二部分,需要的朋友可以參考下<BR>
    2023-01-01
  • Spring Boot外部化配置實戰(zhàn)解析

    Spring Boot外部化配置實戰(zhàn)解析

    這篇文章主要介紹了Spring Boot外部化配置實戰(zhàn)解析,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 面試題:用 Java 逆序打印鏈表

    面試題:用 Java 逆序打印鏈表

    這篇文章主要介紹了面試題:用 Java 逆序打印鏈表,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Jackson使用示例-Bean、XML、Json之間相互轉換

    Jackson使用示例-Bean、XML、Json之間相互轉換

    Jackson是一個強大工具,可用于Json、XML、實體之間的相互轉換,JacksonXmlElementWrapper用于指定List等集合類,外圍標簽名,JacksonXmlProperty指定包裝標簽名,或者指定標簽內部屬性名,JacksonXmlRootElement指定生成xml根標簽的名字,JacksonXmlText指定當前這個值
    2024-05-05

最新評論