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

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

  • 相关阅读:
    开始用博客
    nginx 移动端和PC端相互访问
    call、apply、bind的区别
    获取两个日期之间的所有日期组合
    高频前端开发问题
    图片懒加载实现
    某某公司中级前端面试题
    flex 布局
    plupload.js+php批量上传文件到阿里云oss
    H5 iframe 高度-根据内容的高度自适应 / iframe高度适配
  • 原文地址:https://www.cnblogs.com/zitai/p/11816088.html
Copyright © 2011-2022 走看看