mybatis resulttype resultmap,mybatis result map

  mybatis resulttype resultmap,mybatis result map

  结果映射——解决属性名和字段名不一致的问题

  数据库中的字段

  新建一个项目,拷贝之前的,测试实体类字段不一致的情况

  1.新建一个模块——mybatis-03

  2.新建数据库属性配置文件

  driver=com。MySQL。JDBC。驱动URL=JDBC : MySQL ://localhost :3306/mybatis?使用SSL=false useencoding=false字符编码=UTF-8服务器时区=GMT用户名=root密码=root

  3.新建mybatis-config.xml配置文件

  ?可扩展标记语言版本=1.0 编码=UTF八号?DOCTYPE配置公共-//mybatis。org//DTD配置3.0//EN http://mybatis。org/DTD/mybatis-3-Config。 DTD 配置属性资源= db。属性/环境默认值=开发环境id=开发事务管理器类型= JDBC /数据源类型=池化属性名=司机值=${driver}/属性名=url 值=${url}/属性名=用户名值= $ { 0

  4.创建com.kuang.utils包,包下创建MybatisUtils工具类

  包com。匡。utils导入org。阿帕奇。伊巴提斯。io。资源;导入org。阿帕奇。伊巴提斯。会话。SQL会话;导入org。阿帕奇。伊巴提斯。会话。SQL会话工厂;导入org。阿帕奇。伊巴提斯。会话。sqlsessionfactorybuilder导入Java。io。io异常;导入Java。io。inputstream//sqlSessionFactory用来构建sqlSessionpublic类MybatisUtils { //提升会话工厂的作用域私有静态SqlSessionFactory静态{尝试{//使用框架第一步获取会话工厂对象string resource= mybatis-config。XML ;//通过资源读取配置文件输入流输入流=资源。getresourceasstream(资源);//通过SqlSessionFactoryBuilder加载一个流,构建一个结构化查询语言

  Session工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch (IOException e){ e.printStackTrace(); } } // 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }}

 

  5.创建com.kuang.pojo包,里面存储实体类对象User

  

package com.kuang.pojo;public class User { private int id; private String name; private String password; public User(int id, String name, String password) { this.id = id; this.name = name; this.password = password; } public User() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "id=" + id + ", name=" + name +  + ", password=" + password +  + }; }}

 

  6.创建com.kuang.dao包,里面存放接口UserMapper以及接口实现类UserMapper.xml

  UserMapper

  

package com.kuang.dao;import com.kuang.pojo.User;import java.util.List;import java.util.Map;public interface UserMapper { // 根据用户id查询用户信息 User getUserById(Integer id);}

 

  UserMapper.xml

  

<?xml version="1.0" encoding="UTF8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace=绑定一个对应的Dao/Mapper接口--><mapper namespace="com.kuang.dao.UserMapper"> <select id="getUserById" resultType="com.kuang.pojo.User" parameterType="Integer"> select * from user where id=#{id} </select></mapper>

 

  7.创建测试类

  

package com.kuang.dao;import com.kuang.pojo.User;import com.kuang.utils.MybatisUtils;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.HashMap;import java.util.List;import java.util.Map;public class UserDaoTest { @Test public void testGetUserById(){ //第一步:获取SqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //执行Sql// 方式一:getMapper(推荐使用) UserMapper userDao = sqlSession.getMapper(UserMapper.class); User user1 = userDao.getUserById(1); System.out.println(user1); //关闭sqlSession sqlSession.close(); }}

 

  8测试结果及问题分析

  

 

  8.1解决方案一:在sql查询语句中为pwd字段起别名起别名

  

 

  将原sql语句

  

select id,name,pwd as password from user where id=#{id}

改为

 

  

select id,name,pwd as password from user where id=#{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->id}

8.2 resultMap 结果集映射

 

  字段名:id name pwd属性名:id name password

  

<!--结果集映射--><!-- id:对应下面的引用 type:将结果集映射为什么类型,我们需要映射为一个User对象 result:代表它的结果 column:数据表中的字段名 properties:对象中的属性名 --> <resultMap id="UserMap" type="com.kuang.pojo.User" > <result column="id" property="id"/> <result column="name" property="name" /> <result column="pwd" property="password"/> </resultMap> <select id="getUserById" resultMap="UserMap" > select * from user where id=#{id} </select>

 

  

 

  resultMap 元素是 MyBatis 中最重要最强大的元素ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了ResultMap 的优秀之处——你完全可以不用显式地配置它们

 

  

 

  到此这篇关于Mybatis实现ResultMap结果集的文章就介绍到这了,更多相关Mybatis ResultMap结果集内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: