• Mybatis:ResultMap


    ResultMap:

    解决的问题:属性名和字段名不一致。

    解决方法

    • sql语句中设置别名
    • 使用ResultMap标签定义映射字段

    下面着重介绍ResultMap方法:

    部分环境设置:

    • 数据库字段如下:

    • User实体类设置:
    public class User {
    
        private int id;  //id
        private String name;   //姓名
        private String password;   //密码和数据库不一样!
        
        //构造
        //set/get
        //toString()
    }
    • UserMapper.java接口:
    //根据id查询用户
    User selectUserById(int id);
    • Usermapper.xml中select标签:
    <select id="selectUserById" resultType="user">
    select * from user where id = #{id}
    </select>

      resultType填写之后要填写的resultType标签的id。

    • resultType设置:
    <resultMap id="UserMap" type="user">
            <!-- id为主键 -->
            <!--<id column="id" property="id"/>
            <result column="name" property="name"/>-->
            <!-- column是数据库表的列名 , property是对应实体类的属性名 -->
            <result column="pwd" property="password"/>
        </resultMap>

    对于字段名跟实体类中的属性名相同就可不需配置,字段名和属性名不同才需要配置。

    测试:

    @Test
        public void test01(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
    
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = userMapper.selectUser();
    
            logger.info("info:进入了testlog4j方法");
            logger.debug("debug:进入了testlog4j方法");
            logger.error("error:进入了testlog4j方法");
    
            for (User user : users) {
                System.out.println(user);
            }
    
            sqlSession.close();
        }
    test

    ResultMap不单单能解决字段与属性名不一致的问题,也能轻松解决数据库字段映射实体复杂类型的问题,也就是解决数据库一对多,多对一的情况。

    如果世界总是这么简单就好了(#^.^#)

  • 相关阅读:
    试题 E: 迷宫
    对拍程序
    人群中钻出个光头
    HDU-魔咒词典(字符串hash)
    第八集 你明明自己也生病了,却还是要陪着我
    智力问答 50倒计时
    数据结构
    LeetCode刷题 fIRST MISSING POSITIVE
    LeetCode Best to buy and sell stock
    LeetCode Rotatelmage
  • 原文地址:https://www.cnblogs.com/zitai/p/11816088.html
Copyright © 2020-2023  润新知