栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
    • 1.表的设计:
    • 2.实体类
    • 3.Mapper映射文件
    • 4.测试类
    • 5.结果
    • 6.问题分析:password没有获取到?
    • 7.解决方案
      • 7.1.取别名
      • 7.2.使用结果集映射->ResultMap


1.表的设计:

2.实体类
public class User {
    private int id;
    private String name;
    private String password;
}
3.Mapper映射文件




    
    
    select * from mybatis.user where id = #{id}
  

4.测试类
public class UserDaoTest {
    @Test
    public void test(){
        //第一步:获得SqlSession对象
        SqlSession sqlSession =null;
        try {
            //第二步:执行SQL
            sqlSession = MybatisUtils.getSqlSession();

            UserDao userMapper = sqlSession.getMapper(UserDao.class);
            User user = userMapper.getUserById(1);
            System.out.println(user);
        } catch (Exception e) {
            e.printStackTrace();
        } catch (Error error){
            error.printStackTrace();
        } finally {
            //第三步:关闭sqlSession
            sqlSession.close();
        }
    }
}
5.结果

6.问题分析:password没有获取到?

sql语句:select * from user where id = #{id} 可以看做sql select id,name,pwd from user where id = #{id},mybatis会根据这些查询的列名(会将列名转化为小写,数据库不区分大小写) , 去对应的实体类中查找相应列名的set方法设值 , 由于找不到setPassword() , 所以password返回null ; 【自动映射】

7.解决方案 7.1.取别名

    select userId,userName,pwd as password where id = #{id}

7.2.使用结果集映射->ResultMap
//结果集映射

//column是数据库中的字段,property是实体类中的属性
           //可以省略
       //可以省略
    



  • resultMap 元素是 MyBatis 中最重要最强大的元素
  • ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
  • ResultMap 最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们

当然了,如果世界真的有那么简单就好了

To be continue…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号