项目中需要用到mybatis注解开发。所以需要把若依生成的mybatis的xml文件,改写成注解形式
有几个的改写遇到了麻烦。
首先是批量删除,若依生成的批量删除和按id删除,是在一个方法里面的。所以要对前端传回来的id进行操作
// 数据源按id删除
@DeleteMapping(value = "/deletesourcebyid/{dsids}")
public String deletesourcebyid(@PathVariable String dsids){
Responemsg responemsg = new Responemsg();
if (dsids.length() == 1){
if(datasourceMapper.deleteDatasourceById(dsids)>0){
responemsg.setCode("200");
responemsg.setMsg("操作成功");
}
}else if(dsids.length() > 1){
if(datasourceMapper.deleteDatasourceByIds(dsids)>0){
responemsg.setCode("200");
responemsg.setMsg("操作成功");
}
}
return new Gson().toJson(responemsg);
}
因为sql是不能接收数组类型的,所以只能后台接收前端数据,然后构造成一个字符串传给sql
这里是我没合并前的批量删除代码
// 数据源按id数组批量删除
@RequestMapping(value = "/deletesourcebyids", method = {RequestMethod.GET, RequestMethod.POST})
public String deletesourcebyids(HttpServletRequest request, @RequestBody String bodyin1){
Responemsg responemsg = new Responemsg();
logmsg.printerrormsg("传入:"+bodyin1);
JSONObject jsonObject = JSONObject.fromObject(bodyin1);
String array = jsonObject.getJSONObject("array").getString("dsids").replace("[", "").replace("]", "");
System.err.println(array);
if (datasourceMapper.deleteDatasourceByIds(array) > 0){
responemsg.setCode("200");
responemsg.setMsg("操作成功");
}
return new Gson().toJson(responemsg);
}
这里要用${},而不是用#{}。因为#{}会预编译,也就是会多加‘‘
// 批量按数据源主键删除报表
@Delete("delete from sjzs.datasource where dsid in (${array})")
int deleteDatasourceByIds(@Param("array") String array);
然后是若依生成的模糊查询,这里一开始一直提示我if标签后面要跟<或者</,因为我一开始用!=‘‘
,判断参数为空字符串,然后试了<![CDATA[]]>
用来免编译没有效果,后来改成了!=\"\"
。
然后对着mybatis的官网看,发现普通的where
和<where>
的效果是不一样的,所以就把where从select那句末尾中拿出来,写成标签。
// 查询数据源简介列表
@Select("<script>"
+"select dsid, dsname, dstype, dsip, dsport, dname, dsuser, dspassword from sjzs.datasource"
+"<where>"
+ "<if test=‘dsname != null and dsname !=\"\" ‘> and dsname like concat(‘%‘, #{dsname}, ‘%‘)</if>"
+ "<if test=‘dstype != null ‘> and dstype = #{dstype}</if>"
+ "<if test=‘dsip != null and dsip != \"\" ‘>and dsip = #{dsip}</if>"
+ "<if test=‘dsport != null and dsport != \"\" ‘> and dsport = #{dsport}</if>"
+ "<if test=‘dname != null and dname != \"\" ‘>and dname like concat(‘%‘, #{dname}, ‘%‘)</if>"
+ "<if test=‘dsuser != null and dsuser != \"\" ‘> and dsuser = #{dsuser}</if>"
+ "<if test=‘dspassword != null and dspassword != \"\" ‘>and dspassword = #{dspassword}</if>"
+ "</where>"
+ "</script>")
List<Datasource> getDatasourceList();