• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mybatis简单resultMap使用详解

java 搞代码 4年前 (2022-01-05) 23次浏览 已收录 0个评论

resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。这篇文章主要介绍了mybatis简单resultMap使用详解的相关资料,需要的朋友可以参考下

Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.html

mybatis是一个半自动的ORM(Object Relational Mapping)框架,需要手动配置一些SQL语句或者注解,相对来说Mybatis留给程序员操作的空间灵活度更高,通常需要手动配置一些东西完成OR映射。当数据库表中的字段 和 POJO实体类不匹配时,这是就需要程序员手动完成字段的映射。

mybatis-config.xml配置文件

   			<!-- 使用日志进行帮忙查看 -->		<!-- 取个别名 -->    

mybatisUtil加载工具类

 import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class mybatisUtil { private static SqlSessionFactory sqlSessionFactory = null; static { try { String resource = "mybatis-config.xml"; InputStream in = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlsession(){ return sqlSessionFactory.openSession(); } }

POJO实体类User,为了方便简单实用Lombok注解,减少一些代码。

 package com.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data                           //各种get / set方法  Tostring... @AllArgsConstructor             //全参构造 @NoArgsConstructor              //无参构造 public class User { private int id;						//对应数据库中的id private String username;			//对应数据库中的name private String password;			//对应数据库中的pwd }

接口方法与对应的xml配置文件

 package com.dao; import com.pojo.User; import java.util.List; public interface UserMapper { List getUserList(); }

xml映射

    select *from user; 

1. POJO实体类 和 数据表字段不匹配

 @Test public void test1(){ SqlSession session = mybatisUtil.getSqlsession(); UserMapper mapper = session.getMapper(UserMapper.class); List <strong style="color:transparent">来源gao@daima#com搞(%代@#码@网</strong>list = mapper.getUserList(); for (User user : list) { System.out.println(user.toString()); } session.close(); }

POJO实体类中有两个字段和数据库的字段不匹配,最后获得结果的时对于匹配失败的属性会产生null空值。使用输出日志进行帮忙很容易看到区别。

简单的解决方案:就是SQL语句查询时给查询字段使用重命名。

 select id, name as username, pwd as password from user

2. resultMap解决属性 – 字段不匹配问题

上面这种解决方案是能够解决问题的,但是有点冗余本身就要查全部的信息用的 * 做通配。这么一改需要每个字段都列出来,然后对极个别的字段进行取别名。试想一下当数据表中有几十个字段呢?而真正需要取别名的字段只有1 – 2个呢?因此mybatis提供了一个强大的机制resultMap结果集映射来解决这个问题。

   <!-- 1. id可以认为是定义方法名,整个resultMap是一个映射方法,调用这个方法就可以完成这个映射。 2. type是实体类的名称 --> <!--   column 是数据库字段名    property是实体类属性名   --> select *from user 

resultMap标签的解释:

  1. id可以认为定义方法的名称,下面select中的resultMap传入id的值就相当于使用这个方法完成映射。
  2. type是实体类名
  3. column对应数据库中的字段
  4. property是实体类的属性。

以上就是mybatis简单resultMap使用详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mybatis简单resultMap使用详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址