springboot使用jackson实现pojo和xml互相转换

springboot使用jackson实现pojo和xml互相转换

一、引入maven包

        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
        </dependency>

二、创建pojo

使用lombok快速创建

xml转换核心注解
@JacksonXmlElementWrapper:可以将列表数据转为XML节点。;
@JacksonXmlRootElement:指定生成xml根标签的名字;
@JacksonXmlProperty:指定包装标签名,或者指定标签内部属性名;
@JacksonXmlText:指定当前这个值,没有xml标签包裹。

package com.erfou.entity;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@JacksonXmlRootElement(localName = "xml")
public class PaylinxCallBack {
    @JacksonXmlProperty(localName = "bank_type")
    private String bank_type;

    @JacksonXmlProperty(localName = "cash_fee")
    private String cash_fee;

    @JacksonXmlProperty(localName = "cash_fee_type")
    private String cash_fee_type;

    @JacksonXmlProperty(localName = "fee_type")
    private String fee_type;

    @JacksonXmlProperty(localName = "result_code")
    private String result_code;

    @JacksonXmlProperty(localName = "return_code")
    private String return_code;

    @JacksonXmlProperty(localName = "time_end")
    private String time_end;

    @JacksonXmlProperty(localName = "total_fee")
    private String total_fee;

    @JacksonXmlProperty(localName = "transaction_id")
    private String transaction_id;

    @JacksonXmlProperty(localName = "mch_id")
    private String mch_id;

    @JacksonXmlProperty(localName = "nonce_str")
    private String nonce_str;

    @JacksonXmlProperty(localName = "out_trade_no")
    private String out_trade_no;

    @JacksonXmlProperty(localName = "platform")
    private String platform;

    @JacksonXmlProperty(localName = "sign")
    private String sign;
}

1.Java对象转XML

使用XmlMapper 的writeValueAsString方法进行转换

    @GetMapping("/toxml")
    public void toXml(){
        PaylinxCallBack paylinxCallBack = new PaylinxCallBack();
        paylinxCallBack.setSign("963852741");
        XmlMapper xmlMapper = new XmlMapper();
        try {
            String xml = xmlMapper.writeValueAsString(paylinxCallBack);
            System.out.println(xml);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

转换结果

<xml>
	<bank_type/>
	<cash_fee/>
	<cash_fee_type/>
	<fee_type/>
	<result_code/
	><return_code/>
	<time_end/>
	<total_fee/>
	<transaction_id/>
	<mch_id/>
	<nonce_str/>
	<out_trade_no/>
	<platform/>
	<sign>963852741</sign>
</xml>

2.XML转Java对象

使用xmlMapper.readValue进行转化

 @GetMapping("/topojo")
    public void toPojo() throws IOException {
        String xml="<?xml version=\"1.0\"?>\n" +
                "<xml>\n" +
                "  <bank_type><![CDATA[CFT]]></bank_type>\n" +
                "  <cash_fee><![CDATA[3198]]></cash_fee>\n" +
                "  <cash_fee_type><![CDATA[CNY]]></cash_fee_type>\n" +
                "  <fee_type><![CDATA[AUD]]></fee_type>\n" +
                "  <result_code><![CDATA[SUCCESS]]></result_code>\n" +
                "  <return_code><![CDATA[SUCCESS]]></return_code>\n" +
                "  <time_end><![CDATA[20190218175517]]></time_end>\n" +
                "  <total_fee><![CDATA[659]]></total_fee>\n" +
                "  <transaction_id><![CDATA[4200000268201902183412918770]]></transaction_id>\n" +
                "  <mch_id><![CDATA[1234567]]></mch_id>\n" +
                "  <nonce_str><![CDATA[6saqecbgail2c08kgkgd1mrdfge8i6bb]]></nonce_str>\n" +
                "  <out_trade_no><![CDATA[A1550523295]]></out_trade_no>\n" +
                "  <platform><![CDATA[wechat]]></platform>\n" +
                "  <sign><![CDATA[9E86F28A2C6536509A133DC085AD0203]]></sign>\n" +
                "</xml>";
        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.setDefaultUseWrapper(false);
        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        PaylinxCallBack paylinxCallBack=xmlMapper.readValue(xml,PaylinxCallBack.class);
        System.out.println(paylinxCallBack.toString());
    }

结果

PaylinxCallBack(bank_type=CFT, cash_fee=3198, cash_fee_type=CNY, fee_type=AUD, result_code=SUCCESS, return_code=SUCCESS, time_end=20190218175517, total_fee=659, transaction_id=4200000268201902183412918770, mch_id=1234567, nonce_str=6saqecbgail2c08kgkgd1mrdfge8i6bb, out_trade_no=A1550523295, platform=wechat, sign=9E86F28A2C6536509A133DC085AD0203)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中使用MyBatis进行XML配置,你需要在pom.xml文件中添加MyBatis和MyBatis-Spring的依赖。然后,创建一个Mapper接口和一个对应的XML映射文件。 首先,确保在你的pom.xml文件中添加以下依赖: ```xml <dependencies> ... <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> ... </dependencies> ``` 接下来,创建一个Mapper接口,与XML映射文件的名称和包路径相对应。例如,如果你的XML映射文件名是EmpMapper.xml,你的Mapper接口应该是EmpMapper.java,并且它们应该在相同的包路径下。 在Mapper接口中,定义与XML映射文件中SQL语句相对应的方法。方法的名称和参数应与XML映射文件中的id和参数相匹配。例如,如果你的XML映射文件中有一个id为"list"的select语句,你的Mapper接口应该有一个名为list的方法,并且参数应该与XML映射文件中的参数相匹配。 最后,在XML映射文件中,你可以使用<select>元素指定SQL查询语句。在resultType属性中,指定返回值的类型。例如,如果你的返回值类型是pojo.Emp,你可以在<select>元素中添加resultType="pojo.Emp"。 这只是一个简单的示例,你可以根据你的需求在XML映射文件中添加更多的SQL语句和配置。 总结起来,Spring Boot使用MyBatis进行XML配置需要以下步骤: 1. 添加MyBatis和MyBatis-Spring的依赖到pom.xml文件中。 2. 创建Mapper接口和对应的XML映射文件,并将它们放在相同的包路径下。 3. 在Mapper接口中定义与XML映射文件中SQL语句相对应的方法。 4. 在XML映射文件中使用<select>元素指定SQL查询语句,并指定返回值的类型。 希望对你有所帮助!<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [基于springboot的mybatisxml配置](https://blog.csdn.net/m0_63002921/article/details/130169128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值