SpringBoot记录一次实体新增

不多说,按照顺序记录:
1.HTML

   <div class="layui-btn-group" style="margin-left: 1%; margin-top:2%;">
                    <button class="layui-btn"    data-ng-click="addMaintain()" >
                        添加记录
                    </button>
                </div>

这里写图片描述
2.JS
这里写图片描述

   $scope.addMaintain = function () {
        layer.open({
            type: 1,
            area: ['1000px', '650px'], //宽高
            skin: 'layui-layer-molv', //加上边框
            title: "添加维修记录",
            content: $('#add-Maintain')
            , btn: ['保存', '取消'],
            success: function () {
                // 初始化省份城市,车牌号等函数
                $scope.initializeAddUpkeepLayer();
                laydate.render({
                    elem: "#add-maintain-date",
                    type: 'date'
                });
            },
            btn1:function(){
                $scope.addMaintain.carNumber = $.trim(document.getElementById("upkeepList-addUpkeep-pop-carNumber").options[document.getElementById("upkeepList-addUpkeep-pop-carNumber").selectedIndex].text);
                $scope.addMaintain.patenteName = $.trim($("#upkeepList-addUpkeep-pop-patentName").val());
                if ($scope.addMaintain.patenteName == '请选择') {
                    $scope.addMaintain.patenteName = null;
                }
                $scope.addMaintain.city = $.trim(document.getElementById("upkeepList-addUpkeep-pop-city").options[document.getElementById("upkeepList-addUpkeep-pop-city").selectedIndex].text);
                console.log($scope.addMaintain.city);
                $scope.addMaintain.date = $.trim($("#add-maintain-date").val());
                $scope.addMaintain.compannyName=$.trim($("#add-compannyName").val());
                $scope.addMaintain.site=$.trim($("#add-site").val());
                $scope.addMaintain.free=$.trim($("#add-free").val());
                $scope.addMaintain.info=$.trim($("#add-info").val());
                $scope.addMaintain.patenteNumber=$.trim($("#add-patenteNumber").val());

将页面新增的数据记录下来,放到一个DTO中。
接下来,通过一个ajax向后台发送数据
这里写图片描述

// 向后台传添加的数据
    $scope.addMaintaining=function(tag){
        data.city = tag.city;
        console.log(data.city);
        data.warehouse = tag.warehouse;
        data.carNumber = tag.carNumber;
        data.patenteName = tag.patenteName;
        data.date = tag.date;
        data.compannyName = tag.compannyName;
        data.site = tag.site;
        data.free = tag.free;
        data.info = tag.info;
        data.patenteNumber = tag.patenteNumber;
        $.ajax({
            url:'/insertMaintain',
            contentType: "application/json;charset=utf-8",
            type:'POST',
            data:JSON.stringify(data),
            async: false,
            cache: false,
            processData: false,
            success: function (result) {
                if (result.result == 'success') {
                    layer.alert('操作成功', {icon: 6});
                    location.replace(location.href);
                }
                if (result.result == 'fail')
                    layer.alert('操作失败', {icon: 5});
                return false;
            }
        });

接下来就是
这里写图片描述

<insert id="insert" parameterType="com.yijiupi.himalaya.supplychain.vehicle.domain.po.MaintainPO" >
   INSERT INTO maintain (UUID, car_number, DATE,
      companny_name, site, info,
      free, patente_id, patente_name,
      car_id, berichten, patente_number)
    VALUES (#{uuid,jdbcType=CHAR}, #{carNumber,jdbcType=CHAR}, #{date,jdbcType=TIMESTAMP},
      #{compannyName,jdbcType=VARCHAR}, #{site,jdbcType=VARCHAR}, #{info,jdbcType=VARCHAR},
      #{free,jdbcType=DECIMAL}, #{patenteId,jdbcType=CHAR}, #{patenteName,jdbcType=VARCHAR},
      #{carId,jdbcType=CHAR}, #{berichten,jdbcType=TIMESTAMP},#{patenteNumber,jdbcType=VARCHAR})
  </insert>

dao层接口
int insert(MaintainPO record);
service实现:
这里写图片描述

	MaintainPO maintainPO = new MaintainPO();
		// 页面传过来的
		maintainPO.setCity(maintainDTO.getCity());
		maintainPO.setWarehouse(maintainDTO.getWarehouse());
		maintainPO.setCarNumber(maintainDTO.getCarNumber());
		maintainPO.setVehicleType(maintainDTO.getVehicleType());
		maintainPO.setPatenteNumber(maintainDTO.getPatenteNumber());
		maintainPO.setDate(dateSimpleDateFormat.parse(maintainDTO.getDate()));
		maintainPO.setCompannyName(maintainDTO.getCompannyName());
		maintainPO.setSite(maintainDTO.getSite());
		maintainPO.setFree(maintainDTO.getFree());
		maintainPO.setInfo(maintainDTO.getInfo());
		maintainPO.setBerichten(maintainDTO.getBerichten());
		maintainPO.setUuid(UuidUtils.getUuid());
		// 车辆、驾照信息查询,放到维修表中
		CarPO carByCarNumber = carPOMapper.getCarByCarNumber(maintainDTO.getCarNumber());
		if (null == carByCarNumber) {
			throw new RuntimeException("车牌号不存在,不能添加");
		}
		maintainPO.setCarId(carByCarNumber.getId());
		maintainPO.setVehicleUse(carByCarNumber.getVehicle_use());
		maintainPO.setPatenteId("0");
		maintainPO.setPatenteName("0");
		maintainPO.setPatenteNumber("0");
		// 对于驾照信息的
		if (!StringUtils.isEmpty(maintainDTO.getPatenteName())) {
			PatentePO patentePO = patentePOMapper.getLiveByNameAndCity(maintainDTO.getPatenteName(), maintainDTO.getCity());
			maintainPO.setPatenteName(maintainDTO.getPatenteName());
			LOGGER.info("获得的驾照对象是:" + patentePO);
			if (patentePO != null) {
				maintainPO.setPatenteId(patentePO.getUuid());
				maintainPO.setPatenteNumber(patentePO.getNumber());
			}
		}
		maintainPOMapper.insert(maintainPO);

接下来就是controller的实现了:
这里写图片描述

/**
     * 通过DUBBO微服务,新增维修记录
     */
    @RequestMapping(value = "/insertMaintain",method = RequestMethod.POST,produces={"application/json;charset=UTF-8"})
    public Map<String, String> insertMaintain(@RequestBody MaintainDTO maintainDTO) {
        Map<String, String> resultMap = new HashMap<>(1);
        try {
            LOGGER.info("需要添加维修的车辆信息是:{}\n", maintainDTO);
            iMaintainService.addIMaintain(maintainDTO);
            resultMap.put("result", "success");
        } catch (Exception e) {
            resultMap.put("result", "fail");
        }
        return resultMap;
    }

到此,新增实体的操作记录完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用工厂模式来解决这个问题。具体来说,使用工厂方法模式,将新增操作分离到不同的工厂类中,每个工厂类对应一个实体类,负责创建该实体类的新增操作。 示例代码如下: 1. 定义实体类APO、BPO、CPO ```java public class APO { // 省略属性和方法 } public class BPO { // 省略属性和方法 } public class CPO { // 省略属性和方法 } ``` 2. 定义工厂类APOMapper、BPOMapper、CPOMapper ```java public interface APOMapper { void insert(String param); } @Component("APOMapper") public class APOMapperImpl implements APOMapper { @Autowired private AService aService; @Override public void insert(String param) { // 解析param,处理A表新增操作 String[] params = param.split("_"); String param1 = params[1]; String param2 = params[2]; APO apo = new APO(); apo.setParam1(param1); apo.setParam2(param2); aService.save(apo); } } public interface BPOMapper { void insert(String param); } @Component("BPOMapper") public class BPOMapperImpl implements BPOMapper { @Autowired private BService bService; @Override public void insert(String param) { // 解析param,处理B表新增操作 String[] params = param.split("_"); String param1 = params[1]; String param2 = params[2]; BPO bpo = new BPO(); bpo.setParam1(param1); bpo.setParam2(param2); bService.save(bpo); } } public interface CPOMapper { void insert(String param); } @Component("CPOMapper") public class CPOMapperImpl implements CPOMapper { @Autowired private CService cService; @Override public void insert(String param) { // 解析param,处理C表新增操作 String[] params = param.split("_"); String param1 = params[1]; String param2 = params[2]; CPO cpo = new CPO(); cpo.setParam1(param1); cpo.setParam2(param2); cService.save(cpo); } } ``` 3. 定义工厂类EntityMapperFactory,根据传入的参数param返回对应的工厂类 ```java public class EntityMapperFactory { @Autowired @Qualifier("APOMapper") private APOMapper apoMapper; @Autowired @Qualifier("BPOMapper") private BPOMapper bpoMapper; @Autowired @Qualifier("CPOMapper") private CPOMapper cpoMapper; public EntityMapper getEntityMapper(String param) { if (param.startsWith("A_")) { return apoMapper; } else if (param.startsWith("B_")) { return bpoMapper; } else if (param.startsWith("C_")) { return cpoMapper; } else { throw new IllegalArgumentException("Invalid param: " + param); } } } ``` 4. 在服务层中使用EntityMapperFactory获取对应的工厂类,并调用insert方法进行新增操作 ```java @Service public class EntityService { @Autowired private EntityMapperFactory entityMapperFactory; public void insert(String param) { EntityMapper mapper = entityMapperFactory.getEntityMapper(param); mapper.insert(param); } } ``` 这样,根据传入的参数param的值去判断新增到哪个实体类的操作就被分离到了不同的工厂类中,实现了解耦。同时,新增操作的具体实现也被封装在了对应的实体类中,符合单一职责原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

virtuousOne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值