test:(修改bug)
parent
c9c62e2a9d
commit
4cb510bd71
|
@ -18,7 +18,7 @@ import lombok.NoArgsConstructor;
|
|||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
@TableName("etn_info")
|
||||
@TableName("ent_info")
|
||||
public class EntInfo {
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
|
@ -1,7 +1,8 @@
|
|||
package com.muyu.networking.controller;
|
||||
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.domain.datasources.EntInfo;
|
||||
import com.muyu.common.system.domain.EntInfo;
|
||||
|
||||
import com.muyu.networking.service.EntInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
|
@ -7,6 +7,8 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import com.muyu.domain.Enterprise;
|
||||
import com.muyu.networking.service.EnterpriseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
|
@ -62,6 +64,12 @@ public class EnterpriseController extends BaseController
|
|||
util.exportExcel(response, list, "【请填写功能名称】数据");
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate<String,String> redisTemplate;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取【请填写功能名称】详细信息
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package com.muyu.networking.mapper;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.domain.datasources.EntInfo;
|
||||
import com.muyu.common.system.domain.EntInfo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
package com.muyu.networking.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.domain.Enterprise;
|
||||
import com.muyu.domain.datasources.EntInfo;
|
||||
import com.muyu.common.system.domain.EntInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
package com.muyu.networking.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.muyu.domain.datasources.EntInfo;
|
||||
import com.muyu.common.system.domain.EntInfo;
|
||||
|
||||
import com.muyu.networking.mapper.EntInfoMapper;
|
||||
import com.muyu.networking.service.EntInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.annotation.AccessType;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
|
|
@ -14,14 +14,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.common.core.utils.DateUtils;
|
||||
import com.muyu.common.security.utils.SecurityUtils;
|
||||
import com.muyu.common.system.domain.LoginUser;
|
||||
import com.muyu.common.system.domain.SysRole;
|
||||
import com.muyu.common.system.domain.SysUser;
|
||||
import com.muyu.common.system.remote.RemoteNetworkingService;
|
||||
import com.muyu.common.system.remote.RemoteUserService;
|
||||
import com.muyu.domain.Enterprise;
|
||||
|
||||
import com.muyu.domain.datasources.Datasource;
|
||||
|
||||
import com.muyu.networking.mapper.EnterpriseMapper;
|
||||
import com.muyu.networking.service.EnterpriseService;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
@ -30,14 +27,11 @@ import org.springframework.stereotype.Service;
|
|||
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.IllegalFormatCodePointException;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?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.muyu.networking.mapper.EntInfoMapper">
|
||||
|
||||
</mapper>
|
|
@ -1,30 +1,26 @@
|
|||
package com.muyu.networking.controller;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
package com.muyu.vehicle.controller;
|
||||
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||
import com.muyu.common.core.web.controller.BaseController;
|
||||
import com.muyu.common.core.web.page.TableDataInfo;
|
||||
import com.muyu.common.log.annotation.Log;
|
||||
import com.muyu.common.log.enums.BusinessType;
|
||||
import com.muyu.common.security.annotation.RequiresPermissions;
|
||||
import com.muyu.domain.FaultCode;
|
||||
import com.muyu.domain.req.FaultCodeEditReq;
|
||||
import com.muyu.domain.req.FaultCodeQueryReq;
|
||||
import com.muyu.domain.req.FaultCodeSaveReq;
|
||||
import com.muyu.networking.service.FaultCodeService;
|
||||
import io.swagger.annotations.*;
|
||||
|
||||
import com.muyu.vehicle.service.FaultCodeService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||
import com.muyu.common.core.web.controller.BaseController;
|
||||
import com.muyu.common.log.annotation.Log;
|
||||
import com.muyu.common.log.enums.BusinessType;
|
||||
import com.muyu.common.security.annotation.RequiresPermissions;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
|
@ -1,4 +1,4 @@
|
|||
package com.muyu.networking.mapper;
|
||||
package com.muyu.vehicle.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.domain.FaultCode;
|
|
@ -1,8 +1,10 @@
|
|||
package com.muyu.vehicle.myDatasource.aspect;
|
||||
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.common.security.utils.SecurityUtils;
|
||||
import com.muyu.common.system.domain.LoginUser;
|
||||
import com.muyu.common.system.domain.SysUser;
|
||||
import com.muyu.common.system.remote.RemoteNetworkingService;
|
||||
import com.muyu.common.system.remote.RemoteUserService;
|
||||
import com.muyu.vehicle.myDatasource.holder.DynamicDataSourceHolder;
|
||||
import org.aspectj.lang.annotation.After;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
|
@ -21,9 +23,9 @@ import org.springframework.stereotype.Component;
|
|||
@Component
|
||||
public class DataSourceAsp {
|
||||
@Autowired
|
||||
private RemoteNetworkingService remoteUserService;
|
||||
private RemoteUserService remoteUserService;
|
||||
|
||||
@Pointcut("execution(public * com.muyu.vehicle.controller.*(..))")
|
||||
@Pointcut("execution(public * com.muyu.vehicle.controller.*Controller.*(..))")
|
||||
public void pointcut() {
|
||||
}
|
||||
|
||||
|
@ -32,12 +34,15 @@ public class DataSourceAsp {
|
|||
*/
|
||||
@Before("pointcut()")
|
||||
public void beforeMethod() {
|
||||
Long userid = SecurityUtils.getLoginUser().getUserid();
|
||||
SysUser sysUser = (SysUser) remoteUserService.selectUserById(userid).getData();
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("ent_" + sysUser.getEnterpriseId());
|
||||
}
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
Long userid = loginUser.getUserid();
|
||||
Result<SysUser> sysUserResult = remoteUserService.selectUserById(userid);
|
||||
SysUser sysUser = sysUserResult.getData();
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("ent" + sysUser.getEnterpriseId());
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 的每一個方法執行之后 執行的處理
|
||||
* 无论正常还是异常终了
|
||||
|
|
|
@ -2,6 +2,10 @@ package com.muyu.vehicle.myDatasource.rule;
|
|||
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.muyu.vehicle.myDatasource.holder.DynamicDataSourceHolder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -12,6 +16,10 @@ import java.util.Map;
|
|||
* @Author: zhangxu
|
||||
* @Created: 2024/6/10 19:55
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DynamicDataSource extends AbstractRoutingDataSource {
|
||||
/**
|
||||
* 备份所有数据源信息 备份的是 指针
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package com.muyu.vehicle.rabbit;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.muyu.domain.FaultRecord;
|
||||
|
||||
import com.muyu.domain.Information;
|
||||
|
||||
import com.muyu.vehicle.myDatasource.holder.DynamicDataSourceHolder;
|
||||
|
||||
import com.muyu.vehicle.service.FaultRecordService;
|
||||
import com.muyu.vehicle.service.IInformationService;
|
||||
import com.rabbitmq.client.Channel;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
||||
|
@ -15,8 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/** 监听基础事件的数据
|
||||
* @ClassDescription:
|
||||
|
@ -27,103 +34,161 @@ import java.util.Date;
|
|||
@Component
|
||||
@Log4j2
|
||||
public class Consumer {
|
||||
|
||||
|
||||
private static final String QUEUE_NAME_EVENT_START = "event_exception_start";
|
||||
private static final String QUEUE_NAME_EVENT_ENT = "event_exception_ent";
|
||||
private static final String QUEUE_NAME_EVENT_START = "zhiLian-vehicle-end";
|
||||
private static final String QUEUE_NAME_EVENT_ENT = "zhiLian-vehicle-start";
|
||||
|
||||
@Autowired
|
||||
private FaultRecordService recordService;
|
||||
@Autowired
|
||||
private IInformationService service;
|
||||
|
||||
|
||||
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate<String,String> redisTemplate;
|
||||
|
||||
|
||||
|
||||
public void manyJob(){
|
||||
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("ent5");
|
||||
|
||||
List<Information> list = service.selectVehicleListAll(new Information());
|
||||
|
||||
ExecutorService executor = Executors.newFixedThreadPool(list.size());
|
||||
|
||||
list.forEach(information -> {
|
||||
|
||||
executor.submit(new Runnable() {
|
||||
|
||||
@Override
|
||||
|
||||
public void run() {
|
||||
|
||||
redisTemplate.opsForValue().set(information.getNumber()+"1", String.valueOf(information.getEnterpriseId()));
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RabbitListener( queuesToDeclare= {@Queue(name = QUEUE_NAME_EVENT_START)})
|
||||
public void receive(String msg, Channel channel, Message message) {
|
||||
//获取消息的id
|
||||
//获取消息的ID
|
||||
String messageId = message.getMessageProperties().getMessageId();
|
||||
log.info("接收到消息是:{}", message);
|
||||
Long messageId1 = redisTemplate.opsForSet().add("messageId", messageId);
|
||||
try {
|
||||
if (messageId1 == 1) {
|
||||
//如果消息id不存在,则进行消费
|
||||
log.info("消息id不存在,进行消费");
|
||||
//进行消费
|
||||
FaultRecord faultCode = JSON.parseObject(msg, FaultRecord.class);
|
||||
//判断车辆数据那个企业
|
||||
String s = redisTemplate.opsForValue().get(faultCode.getVin() + "1");
|
||||
//...选择数据源
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
|
||||
//进行添加故障
|
||||
FaultRecord build = FaultRecord.builder()
|
||||
.faultCode(faultCode.getFaultCode())
|
||||
.startTime(new Date())
|
||||
.vin(faultCode.getVin())
|
||||
.build();
|
||||
recordService.save(build);
|
||||
Long count = redisTemplate.opsForSet().add("messageId", messageId);
|
||||
if (count==1) {
|
||||
log.info("故障开始消费!{}", msg);
|
||||
manyJob();
|
||||
FaultRecord faultRecord = JSON.parseObject(msg, FaultRecord.class);
|
||||
//判断车辆属于哪个企业
|
||||
String s = redisTemplate.opsForValue().get(faultRecord.getVin()+"1");
|
||||
// 进行添加故障表
|
||||
Executors.newFixedThreadPool(1). execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//选择数据源,切换数据源,
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("ent"+Integer.valueOf(s));
|
||||
FaultRecord build = FaultRecord
|
||||
.builder()
|
||||
.faultCode(faultRecord.getFaultCode())
|
||||
.vin(faultRecord.getVin())
|
||||
.startTime(faultRecord.getStartTime()).build();
|
||||
recordService.save(build);
|
||||
// 移除数据源,
|
||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||
|
||||
//移除数据源
|
||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||
//确认消息消费成功
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||
log.error("消费成功", message);
|
||||
log.info("消费成功!数据源为:{}",message);
|
||||
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
log.error("消费失败{}", e.getMessage());
|
||||
try {
|
||||
//回退消息
|
||||
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
|
||||
log.error("消费回退{}乘公共");
|
||||
} catch (IOException ex) {
|
||||
log.info("回退失败:{}",ex.getMessage());
|
||||
|
||||
}
|
||||
log.info("消费失败,{}",e.getMessage());
|
||||
|
||||
try {
|
||||
|
||||
//回退消息
|
||||
|
||||
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
|
||||
|
||||
log.info("回退成功");
|
||||
|
||||
}catch (IOException ex){
|
||||
|
||||
log.info("回退失败:{}",ex.getMessage());
|
||||
|
||||
}
|
||||
|
||||
throw new RuntimeException(e);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@RabbitListener(queuesToDeclare = {@Queue(name = QUEUE_NAME_EVENT_ENT)})
|
||||
public void receive2(String msg, Channel channel, Message message) {
|
||||
//获取消息是
|
||||
//获取消息的ID
|
||||
String messageId = message.getMessageProperties().getMessageId();
|
||||
try {
|
||||
//将消息添加redis里面
|
||||
Long messageId1 = redisTemplate.opsForSet().add("messageIdEnt", messageId);
|
||||
//添加乘公共
|
||||
if (messageId1 == 1){
|
||||
log.info("消息id不存在,进行消费");
|
||||
//添加消息id到redis set集合中 添加成功返回1 表示未消费 添加失败返回0 表示已消费
|
||||
Long count = redisTemplate.opsForSet().add("messageId", messageId);
|
||||
//添加成功 正常消费信息
|
||||
if (count == 1) {
|
||||
log.info("故障结束消费:{}",msg);
|
||||
manyJob();
|
||||
FaultRecord faultRecord = JSON.parseObject(msg, FaultRecord.class);
|
||||
//还是判断车辆数据那个企业
|
||||
String s = redisTemplate.opsForValue().get(faultRecord.getVin() + "1");
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("test_"+s);
|
||||
//进行查询修改故障表
|
||||
FaultRecord byFaultRecord = recordService.getByFaultRecord(faultRecord);
|
||||
log.info("进行查询的故障为:{}",byFaultRecord);
|
||||
byFaultRecord.setEndTime(faultRecord.getEndTime());
|
||||
//修改故障表
|
||||
recordService.updateByFaultRecord(byFaultRecord);
|
||||
//移除数据源
|
||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||
//判断车辆属于哪个企业
|
||||
String s = redisTemplate.opsForValue().get(faultRecord.getVin()+"1");
|
||||
Executors.newFixedThreadPool(1).execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
//选择数据源,切换数据源,
|
||||
DynamicDataSourceHolder.setDynamicDataSourceKey("ent"+Integer.valueOf(s));
|
||||
// 进行查询故障表
|
||||
FaultRecord faultRecordOne = recordService.getByFaultRecord(faultRecord);
|
||||
log.info("查询到的故障为:{}",faultRecordOne);
|
||||
faultRecordOne.setEndTime(faultRecord.getEndTime());
|
||||
// 进行修改故障表
|
||||
recordService.updateByFaultRecord(faultRecordOne);
|
||||
// 移除数据源,
|
||||
DynamicDataSourceHolder.removeDynamicDataSourceKey();
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
//确认消费
|
||||
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
|
||||
log.info("消费成功");
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("消费失败{}",e.getMessage());
|
||||
|
||||
try {
|
||||
//回退消息
|
||||
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
|
||||
log.info("消费回退{}乘公共");
|
||||
} catch (IOException ex) {
|
||||
log.error("回退失败:{}",ex.getMessage());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//删除队列ID
|
||||
log.info("消费失败,{}",e.getMessage());
|
||||
|
||||
try {
|
||||
//回退消息
|
||||
channel.basicReject(message.getMessageProperties().getDeliveryTag(),false);
|
||||
log.info("回退消息");
|
||||
} catch (IOException ex) {
|
||||
//回退失败
|
||||
log.info("回退失败");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Tomcat
|
||||
server:
|
||||
port: 9205
|
||||
port: 9206
|
||||
|
||||
# Spring
|
||||
spring:
|
||||
|
@ -9,14 +9,14 @@ spring:
|
|||
password: guest
|
||||
virtualHost: /
|
||||
port: 5672
|
||||
host: 115.159.67.205
|
||||
host: 47.93.162.81
|
||||
listener:
|
||||
simple:
|
||||
prefetch: 1 # 每次只能获取一条,处理完成才能获取下一条
|
||||
publisher-confirm-type: correlated #确认消息已发送到交换机(Exchange)
|
||||
publisher-returns: true #确认消息已发送到队列(Queue)
|
||||
publisher-returns: true #确认消息已发送到队列(Queue)
|
||||
main:
|
||||
allow-circular-references: true
|
||||
allow-circular-references: true
|
||||
application:
|
||||
# 应用名称
|
||||
name: muyu-vehicle
|
||||
|
@ -32,13 +32,12 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 122.152.211.1:8848
|
||||
namespace: networking
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
shared-configs:
|
||||
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||
namespace: networking
|
||||
|
||||
logging:
|
||||
level:
|
||||
com.muyu-vehicle.mapper: DEBUG
|
||||
com.muyu.vehicle.mapper: DEBUG
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.muyu.networking.mapper.CertificationMapper">
|
||||
<mapper namespace="com.muyu.vehicle.mapper.CertificationMapper">
|
||||
|
||||
<resultMap type="com.muyu.domain.Certification" id="CertificationResult">
|
||||
<result property="id" column="id" />
|
||||
|
|
Loading…
Reference in New Issue