20170710@wedoctor

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

      
        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}
        )
        
            SELECT LAST_INSERT_ID() AS id
        
    

对应接口:

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

调用:

   Long userId = userMapper.addUser(userDo);

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

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

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







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

    
    
    
    

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

你可能感兴趣的:(20170710@wedoctor)