美文网首页
20170710@wedoctor

20170710@wedoctor

作者: 王帅199207 | 来源:发表于2017-07-11 09:19 被阅读9次

    <b>一、mybatis</b>
    今天改老代码BUG的时候碰到的一个mybatis相关的问题.
    使用以下mapper.xml:

          <insert id="addUser" parameterType="userDo">
            INSERT INTO gl_user (
            id,
            gmt_created,
            gmt_modified,
            is_delete,
            login_id,
            nick_name,
            password,
            region,
            user_status,
            user_type,
            user_attribute,
            modify_user_id,
            created_user_id
            )
            VALUES
            (
            #{id},
            NOW(),
            NOW(),
            #{isDelete},
            #{loginId},
            #{nickName},
            #{password},
            #{region},
            #{userStatus},
            #{userType},
            #{userAttribute},
            #{modifiedUserId},
            #{createdUserId}
            )
            <selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">
                SELECT LAST_INSERT_ID() AS id
            </selectKey>
        </insert>
    

    对应接口:

        /**
         * 增加用户
         *
         * @param user
         */
        Long addUser(UserDO user);
    

    调用:

       Long userId = userMapper.addUser(userDo);
    

    <b> 原作者预期这个接口调用之后会返回一个long类型的id值,但事实是mapper接口返回值依然是成功插入的记录数,不同的是主键值已经赋值到领域模型实体的id中了,即参数user中的id值已经是新生成的id了。(selectKey操作会将操作查询结果赋值到insert元素的parameterType的入参实例下对应的属性中。并提供给insert语句使用)</b>
    参见:http://www.jianshu.com/p/7721b115f716

    正确的使用方法如下:
    调用:

            userMapper.addUser(userDo);
            Long userId = userDo.getId();
    







    <b>二、logback配置文件logback.xml</b>
    打印指定包的日志至控制台:

        <logger name="com.wedoctor.health.card.cloud.user.biz.dal" level="DEBUG"/>
        <logger name="com.wedoctor.health.card.cloud.user.biz.dal.domain" level="ERROR"/>
        <logger name="com.wedoctor.health.card.cloud.user.biz.dal.ultralog" level="ERROR"/>
        <logger name="com.wedoctor.health.card.cloud.user.biz.dal.msg" level="ERROR"/>
    

    通过设定不同的日志等级,实现了打印某个包下的日志,并过滤掉不需要的一部分。

    相关文章

      网友评论

          本文标题:20170710@wedoctor

          本文链接:https://www.haomeiwen.com/subject/wfyphxtx.html