码迷,mamicode.com
首页 > 其他好文 > 详细

关于Mybatis的几个问题

时间:2018-04-16 20:40:31      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:common   equal   红色   var   pre   OLE   方案   where   实体   

今天在用mybatis开发的时候遇到两个问题,下面一一列出并给出解决方案。

问题一

最开始我设置的实体类中有个字段如isParent为boolean类型,set和get方法是eclispe自动生成的。

    private boolean isParent;

    public boolean isParent() {
        return isParent;
    }

    public void setParent(boolean isParent) {
        this.isParent = isParent;
    }    

在xml中是这么写的

<select id="getChildrenByParentId" parameterType="java.lang.String" resultType="org.sjzcgl.common.data.CommonTree">
        SELECT ID,
               NAME,
               CASE
                 WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN
                  ‘1‘
                 ELSE
                  ‘0‘
               END isParent,
               PARENT_ID parentId,
               IS_METADATA_TYPE isMetadataType,
               SFYX
          FROM TREE_YJS T
          WHERE T.SFYX = ‘1‘
            <if test="_parameter != null and _parameter != ‘‘">
                AND T.PARENT_ID = #{0,jdbcType=VARCHAR}
            </if>
            <if test="_parameter == null or _parameter == ‘‘">
                AND T.PARENT_ID IS NULL
            </if>
    </select>

其中CASE WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN ‘1‘ ELSE ‘0‘ END isParent ,对于isParent这个字段无论是返回的是字符串‘1’、‘0‘,还是数字1、0,又或者直接是true、false都不能转换为booean。

解决方案:将isParent修改为String类型,并且修改get方法。

 

    private String isParent;

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }
            
    public boolean getIsParent() {
        if(this.isParent.equals("1"))
            return true;
        else
            return false;
    }

 

问题二

还是这个xml,入参是String类型,但是在<if>标签里面(红色部分)不识别。

 

    <select id="getChildrenByParentId" parameterType="java.lang.String" resultType="org.sjzcgl.common.data.CommonTree">
        SELECT ID,
               NAME,
               CASE
                 WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN
                  ‘1‘
                 ELSE
                  ‘0‘
               END isParent,
               PARENT_ID parentId,
               IS_METADATA_TYPE isMetadataType,
               SFYX
          FROM TREE_YJS T
          WHERE T.SFYX = ‘1‘
            <if test="parentId != null and parentId != ‘‘">
                AND T.PARENT_ID = #{0,jdbcType=VARCHAR}
            </if>
            <if test="parentId == null or parentId == ‘‘">
                AND T.PARENT_ID IS NULL
            </if>
    </select>

 

解决方案:将标红部分改为_parameter

 

    <select id="getChildrenByParentId" parameterType="java.lang.String" resultType="org.sjzcgl.common.data.CommonTree">
        SELECT ID,
               NAME,
               CASE
                 WHEN EXISTS (SELECT 1 FROM TREE_YJS A WHERE A.PARENT_ID = T.ID) THEN
                  ‘1‘
                 ELSE
                  ‘0‘
               END isParent,
               PARENT_ID parentId,
               IS_METADATA_TYPE isMetadataType,
               SFYX
          FROM TREE_YJS T
          WHERE T.SFYX = ‘1‘
            <if test="_parameter != null and _parameter != ‘‘">
                AND T.PARENT_ID = #{0,jdbcType=VARCHAR}
            </if>
            <if test="_parameter == null or _parameter == ‘‘">
                AND T.PARENT_ID IS NULL
            </if>
    </select>

 

 

 

 

关于Mybatis的几个问题

标签:common   equal   红色   var   pre   OLE   方案   where   实体   

原文地址:https://www.cnblogs.com/caozx/p/8858171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!