背景:数据库没有修改权限,先要修改数据库中的数据简直困难重重。
平常写的接口,都是固定某张表的增删改查的操作。
能不能写一个接口,传值为自定义的sql,通过接口调用去修改数据库。
示例如下,通过get请求调用。
可以用postman或者浏览器里输入地址(要确定项目发布后外网是否可以访问。)
修改的示例:
https://IP:port/xx/db/operation?value=update t_user set nick_name = '杨过' where nick_name = '奔跑吧9302'
这样就可以跟随环境修改相应的数据库了。(因为配置文件中有相应的数据库连接)
@Controller
@RequestMapping(value ="/db")
@Api(tags ="数据库的操作")
@Slf4j
public class DBControllerextends BaseController {
@Autowired
InnerHouseServiceinnerHouseService;
@RequestMapping(value ="/operation" , method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="db", notes="数据库的操作")
public BaseResDTO>>InnerHouseQueryCommon(String value)throws Exception {
log.info("操作数据库开始,脚本为"+value);
List> linkedHashMaps =innerHouseService.ExecutionScript(value);
BaseResDTO>> res =new BaseResDTO<>();
res.setMessage("脚本执行成功。");
res.setCode("success");
res.setDataBody(linkedHashMaps);
return res;
}
}
@Service
public class InnerHouseService {
@Autowired
InnerHouseMapperinnerHouseMapper;
public List>ExecutionScript(String value) {
return innerHouseMapper.superManagerSelect(value);
}
}
XML文件的内容
<?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.fulan.readygo.mapper.backdoor.InnerHouseMapper">
<select id="superManagerSelect" parameterType="String" resultType="java.util.LinkedHashMap">
${value}
</mapper>
以前用mybatis都是针对一个表的增删改查,用这个就可以对该数据库中的任意表进行操作了。
网友评论