.xml文件中对两张表插入数据(新增)

这里我的数据库是mysql,所以我使用两条sql语句使用事务来保证插入的一致性。

首先,我的要插入数据的两张表是通过主键equipmentId关联的,所以在service层需要用到事务注解

代码如下

  1. xml文件

分别对应mapper层的两个方法

<!-- 新增 -->
    <insert id="insertEquipmentInfoOne">
        INSERT INTO tbl_dic_equipment ( equipment_id, equipment_name, communication_type, protocol_type )
        VALUES ( #{equipmentId}, #{equipmentName}, #{communicationType}, #{protocolType} );
    </insert>

    <insert id="insertEquipmentInfoTwo">
        INSERT INTO tbl_config_equipment ( equipment_id, width, height, ip, port, update_time )
        VALUES ( #{equipmentId}, #{width}, #{height}, #{ip}, #{port}, #{updateTime} )
    </insert>
  1. mapper层

此处的两个方法已在.xml文件中实现

@Mapper
public interface EquipmentInfoDao {
    
    /**
     * 新增数据
     *
     * @param equipment
     * @return
     */
    int insertEquipmentInfoOne(EquipmentVO equipment);

    int insertEquipmentInfoTwo(EquipmentVO equipment);
}
  1. service层

service 接口

此处只有一个方法,在impl实现类会重写该方法

public interface EquipmentInfoService {
    
    /**
     * 新增设备信息
     * @param equipment
     * @return
     */
    int insertEquipmentInfo(EquipmentVO equipment);
}

impl实现类

这里我们实现EquipmentInfoService接口,并注入EquipmentInfoDao,我们重写service接口的方法并加上@Transactional事务注解,保证数据的一致性,之后调用equipmentInfoDao的两个方法

@Service
public class EquipmentInfoServiceImpl implements EquipmentInfoService {

    @Autowired
    private EquipmentInfoDao equipmentInfoDao;

    // 新增数据
    @Transactional
    @Override
    public int insertEquipmentInfo(EquipmentVO equipment) {

        int one = equipmentInfoDao.insertEquipmentInfoOne(equipment);
        int two = equipmentInfoDao.insertEquipmentInfoTwo(equipment);
        return one + two;

    }
}
  1. controller层

这里直接调用了equipmentInfoService的方法(已被impl实现)

@RestController
@RequestMapping(value = "/api")
@Api(value = "######")
@Slf4j
public class ApiController {

    @Autowired
    private EquipmentInfoService equipmentInfoService;

    @ApiOperation(value="新增设备信息")
    @PostMapping(value = "/insert")
    public ResponseDto insertEquipmentInfo(@RequestBody EquipmentVO equipment) {
        int i = equipmentInfoService.insertEquipmentInfo(equipment);
        return new ResponseDto(i);
    }
}
  1. 如果你想对接收的数据进行约束,判断,等,可以直接在impl类中做判断,这样可以使得controller层更加简捷,当然也可直接在controller层做判断。

  1. 最后我们使用Postman进行接口测试

7.看到这里就结束了,如果有什么不懂评论区见!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值