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实现
    WMI控制IIS(2)
    WMI控制IIS
    C语言中用qsort()快速排序
    list_for_each引起的问题
    c++数组地址
    Valgrind 使用简单说明检查内存泄露
    firefox 在UBUNTU下编译
    内存泄漏检测umdh
    ubuntu GIT 安装与使用
  • 原文地址:https://www.cnblogs.com/zitai/p/11816088.html
Copyright © 2011-2022 走看看