mybatis plus(包米豆)json存储Mysql数据库

 直接看代码,实现传输的东西到数据库并且读出来.

注意:这里的Object到数据库其实会生成json,数据库字段是json,一定记得,然后用的是mysql的数据库

import com.baomidou.mybatisplus.annotation.TableName;
import com.hz.hzweb.bean.base.DataEntity;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
@TableName("bc_house")
public class HouseEntity extends DataEntity<HouseEntity> implements Serializable {
    /**
     * id
     */
    private Long houseid;

    private String verify;

    private String housename;

    private Object housebasis;

    private Object housecarodds;

    private Object housecarlimit;

    private Object housecqsscodds;

    private Object housecqssclimit;

    private Object housepcodds;

    private Object housepclimit;

    private Object housecanadaodds;

    private Object housecanadalimit;

    private Object houseflyodds;

    private Object houseflylimit;

    private Object housesendmsg;

    private String kfqq = "123456";

    private String kfwechat = "123456";

    private Integer cancel = 0;

    private Integer billsmallshow = 5;

    private Integer billshow = 0;

    private String houseproxyaccount = "123456";

    private String houseproxypassword = "123456";

    private String wechatpayid = "123456";

    private String alipayid = "123456";

    private String qrwechatpay = "http://www.baidu.com";

    private String qralipay = "http://www.baidu.com";

    /**
     * 房间状态
     */
    private Integer isstutas = 0;
    /**
     * 房间到期时间
     */
    private Date expiretime;

}

mapper文件的配置,这里的

typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"配置文件其实就是解析出来,但是存入的时候就需要转成json的字符串
<?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.hz.hzweb.bean.auth.mapper.HouseMapper">
    <resultMap id="HouseMap" type="com.hz.hzweb.bean.auth.entity.housebean.HouseEntity">
        <result property="houseid" column="houseid"/>
        <result property="verify" column="verify"/>
        <result property="housename" column="housename"/>
        <result property="housebasis" column="housebasis"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housecarodds" column="housecarodds"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housecarlimit" column="housecarlimit"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housecqsscodds" column="housecqsscodds"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housecqssclimit" column="housecqssclimit"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housepcodds" column="housepcodds"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housepclimit" column="housepclimit"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housecanadaodds" column="housecanadaodds"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housecanadalimit" column="housecanadalimit"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="houseflyodds" column="houseflyodds"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="houseflylimit" column="houseflylimit"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="housesendmsg" column="housesendmsg"
                typeHandler="com.hz.hzweb.config.handler.MapStringTypeHandler"/>
        <result property="kfqq" column="kfqq"/>
        <result property="kfwechat" column="kfwechat"/>
        <result property="cancel" column="cancel"/>
        <result property="billsmallshow" column="billsmallshow"/>
        <result property="billshow" column="billshow"/>
        <result property="houseproxyaccount" column="houseproxyaccount"/>
        <result property="houseproxypassword" column="houseproxypassword"/>
        <result property="wechatpayid" column="wechatpayid"/>
        <result property="alipayid" column="alipayid"/>
        <result property="qrwechatpay" column="qrwechatpay"/>
        <result property="qralipay" column="qralipay"/>
        <result property="isstutas" column="isstutas"/>
        <result property="expiretime" column="expiretime"/>
    </resultMap>
</mapper>

 MapStringTypeHandler是解析文件生成对象

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public class MapStringTypeHandler<T> extends BaseTypeHandler<Map<String, T>> {

    private Class<T> clazz;
    //private static final TypeReference<HashMap<String, String>> mapStrStrTypeRef = new TypeReference<HashMap<String, String>>(){};
    private final TypeReference<HashMap<String, T>> typeRef = new TypeReference<HashMap<String, T>>() {
    };

    public MapStringTypeHandler(Class<T> clazz) {
        this.clazz = clazz;
    }

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Map<String, T> parameter, JdbcType jdbcType) throws SQLException {
        String json = JSON.toJSONString(parameter);
        ps.setString(i, json);
    }

    @Override
    public Map<String, T> getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return parseJson(rs.getString(columnName));
    }

    @Override
    public Map<String, T> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return parseJson(rs.getString(columnIndex));
    }

    @Override
    public Map<String, T> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return parseJson(cs.getString(columnIndex));
    }

    private Map<String, T> parseJson(String json) {
        if (String.class == clazz || Integer.class == clazz || Boolean.class == clazz) {
            return JSON.parseObject(json, typeRef);
        }
        Map<String, T> result = new HashMap<>();
        JSON.parseObject(json).forEach((k, v) -> result.put(k, JSON.parseObject(JSON.toJSONString(v), clazz)));
        return result;
    }
}

这个是serviceImpl,这里面设置的文件转成json,同学可以自己试试生成你想要的object,转成json后到数据库不会报错,在这里踩坑解决了一天,希望大家跳过这个坑

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hz.hzweb.bean.auth.entity.housebean.*;
import com.hz.hzweb.bean.auth.mapper.HouseMapper;
import com.hz.hzweb.bean.auth.service.HouseService;
import com.hz.hzweb.tools.net.RestResponse;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.Random;
import java.util.UUID;

@Service
public class HouseServiceImpl extends ServiceImpl<HouseMapper, HouseEntity> implements HouseService {


    @Override
    public RestResponse openhouse(String housename) {
        Random random = new Random();
        String result = "";
        for (int i = 0; i < 6; i++) {
            result += random.nextInt(10);
        }
        Long aLong = Long.valueOf(result);
        HouseEntity houseEntity1 = baseMapper.selectOne(new QueryWrapper<HouseEntity>().eq("houseid", aLong));
        if (!StringUtils.isEmpty(houseEntity1)) return RestResponse.failure("房间已经存在!").setCode(500);
        HouseEntity houseEntity = new HouseEntity();
        houseEntity.setHousecanadalimit(JSONObject.toJSONString(new HouseCanadaLimit()));
        houseEntity.setHousebasis(JSONObject.toJSONString(new HouseBasis()));
        houseEntity.setHousename(housename);
        houseEntity.setVerify(UUID.randomUUID().toString().replaceAll("-", ""));
        houseEntity.setHouseid(aLong);
        houseEntity.setHousecanadaodds(JSONObject.toJSONString(new HouseCanadaOdds()));
        houseEntity.setHousecarlimit(JSONObject.toJSONString(new HouseCarLimit()));
        houseEntity.setHousecarodds(JSONObject.toJSONString(new HouseCarOdds()));
        houseEntity.setHousecqssclimit(JSONObject.toJSONString(new HouseCqsscLimit()));
        houseEntity.setHousecqsscodds(JSONObject.toJSONString(new HouseCqsscOdds()));
        houseEntity.setHouseflylimit(JSONObject.toJSONString(new HouseFlyLimit()));
        houseEntity.setHouseflyodds(JSONObject.toJSONString(new HouseFlyOdds()));
        houseEntity.setHousepclimit(JSONObject.toJSONString(new HousePcLimit()));
        houseEntity.setHousepcodds(JSONObject.toJSONString(new HousePcOdds()));
        houseEntity.setHousesendmsg(JSONObject.toJSONString(new HouseSendMsg()));
        baseMapper.insert(houseEntity);
        return RestResponse.success().setData(houseEntity);
    }

    @Override
    public RestResponse queryhouse(Long houseid) {
        HouseEntity houseEntity = baseMapper.selectOne(new QueryWrapper<HouseEntity>().eq("houseid", houseid));
        if (StringUtils.isEmpty(houseEntity)) return RestResponse.failure("房间不存在").setCode(500);
        return RestResponse.success().setAny("obj", houseEntity).setCode(0);
    }

    @Override
    public RestResponse gameopenclose(Long houseid, int type) {
        if (type == 0) {
            HouseEntity houseEntity = baseMapper.selectOne(new QueryWrapper<HouseEntity>().eq("houseid", houseid));
            HouseBasis houseBasis = (HouseBasis) houseEntity.getHousebasis();
            houseBasis.setFlystutas(0);
            houseBasis.setPcstutas(0);
            houseBasis.setCqsscstutas(0);
            houseBasis.setCarstutas(0);
            houseBasis.setCanadastutas(0);
            houseEntity.setHousebasis(houseBasis);
            baseMapper.updateById(houseEntity);
            return RestResponse.success("关闭成功").setCode(0);
        } else {
            HouseEntity houseEntity = baseMapper.selectOne(new QueryWrapper<HouseEntity>().eq("houseid", houseid));
            HouseBasis houseBasis = (HouseBasis) houseEntity.getHousebasis();
            houseBasis.setFlystutas(1);
            houseBasis.setPcstutas(1);
            houseBasis.setCqsscstutas(1);
            houseBasis.setCarstutas(1);
            houseBasis.setCanadastutas(1);
            houseEntity.setHousebasis(houseBasis);
            baseMapper.updateById(houseEntity);
            return RestResponse.success("开启成功").setCode(0);
        }
    }
}

然后直接insert的时候,

注意:这里必须要转json才能成功到数据库,也就是你需要存储的对象到数据库

除了添加需要把你想存储的对象变成json,其他不变!前端读出来也是对象哦,传对象直接能更改属性

同学如有任何疑问可以联系博主:[email protected]

转载请标明出处哦!

猜你喜欢

转载自blog.csdn.net/MiaodXindng/article/details/86523662
今日推荐