• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

mybatis注解开发动态sql

开发技术 开发技术 2周前 (04-06) 11次浏览

项目中需要用到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();

程序员灯塔
转载请注明原文链接:mybatis注解开发动态sql
喜欢 (0)