这里我的数据库是mysql,所以我使用两条sql语句使用事务来保证插入的一致性。
首先,我的要插入数据的两张表是通过主键equipmentId关联的,所以在service层需要用到事务注解
代码如下
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>
mapper层
此处的两个方法已在.xml文件中实现
@Mapper
public interface EquipmentInfoDao {
/**
* 新增数据
*
* @param equipment
* @return
*/
int insertEquipmentInfoOne(EquipmentVO equipment);
int insertEquipmentInfoTwo(EquipmentVO equipment);
}
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;
}
}
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);
}
}
如果你想对接收的数据进行约束,判断,等,可以直接在impl类中做判断,这样可以使得controller层更加简捷,当然也可直接在controller层做判断。
最后我们使用Postman进行接口测试

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