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得到当前日期的前一天或后一天
    java通过年月得到该月每一天的日期
    前后端分离的跨域请求问题解决
    关于java中分割字符串
    Linux终端命令
    eclipse中tomcat可以start启动,无法debug启动的解决
    通过DOS界面查看电脑上端口使用情况
    前端css
    mysql数据库
    IO阻塞
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14312023.html
Copyright © 2011-2022 走看看