zoukankan      html  css  js  c++  java
  • 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不单单能解决字段与属性名不一致的问题,也能轻松解决数据库字段映射实体复杂类型的问题,也就是解决数据库一对多,多对一的情况。

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

  • 相关阅读:
    java基础语法
    java 设计模式
    Mysql或者SQL Server数据库的运行机制和体系架构
    数据库中间件
    Spring的工作原理
    Hibernate和Mybatis的工作原理以及区别
    SpringMVC
    HTML学习笔记(八) Web Worker
    HTML学习笔记(七) Web Storage
    HTML学习笔记(六) 元素拖放
  • 原文地址:https://www.cnblogs.com/zitai/p/11816088.html
Copyright © 2011-2022 走看看