zoukankan      html  css  js  c++  java
  • mybatis 梳理12--结果映射resultMap

    详细:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps

    属性名和字段名不一致,我们一般都会按照约定去设计数据的,但是也难免瞎起名字

    1、Java中的实体类设计

    public class User {
        private int id; //id
        private String name; //姓名,数据库为username
        private String password; //密码,一致
        //构造
        //set/get
        //toString()
    }

    2、mapper

    //根据id查询用户
    User selectUserById(int id);

    3、mapper映射文件

    <select id="selectUserById" resultType="user">
      select * from user where id = #{id}
    </select>

    4、测试

    @Test
        public void testSelectUserById() {
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.selectUserById(1);
        System.out.println(user);
        session.close();
    }

    5、结果

    User{id=1, name='null', password='123'}

    查询出来发现 name为空 . 说明出现了问题!

    6、分析

    select * from user where id = #{id}

    可以看做 select id,username,password from user where id = #{id}

    mybatis会根据这些查询的列名(会将列名转化为小写,数据库不区分大小写) , 利用反射去对应的实体类中查找 相应列名的set方法设值 ,当然找不到u

    7、解决方案

    (1)

    (2)使用结果集映射->ResultMap 【推荐】

  • 相关阅读:
    Java 判断回文字符串有多少和其中的最大字符串
    多线程下并发数据结构
    HashMap底层及使用个人理解
    简单预览课本后的疑问
    自我介绍
    HTML中行内元素与块级元素的区别:
    html基本选择符的使用
    Html简单介绍
    Sublime Text 3 快捷键精华版
    html文本的基本设置
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14312023.html
Copyright © 2011-2022 走看看