mybatis的resultMap自定义结果映射规则
更多精彩文章欢迎关注公众号“Java之康庄大道”

dao接口
User myGetUserById(Integer id);
sql xml自定义封装规则
<!--自定义某个javabean的封装规则
type:自定义规则的java类型
id:唯一标识方便引用
-->
<resultMap id="myUser" type="com.yunqing.mybatis.bean.User">
<!--id指定主键列的封装规则,return指定普通列的封装规则
column:数据库列名
property:对应的javabean属性
-->
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<!--使用自定义封装规则-->
<select id="myGetUserById" resultMap="myUser">
SELECT * FROM t_user WHERE id = #{id}
</select>
test测试类
@Test
public void myGetUserById() throws IOException {
String r = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(r);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.myGetUserById(1);
System.out.println(user);
}
关于级联映射结果集的规则:
javabean的User.java
private Integer id;
private String name;
private Integer age;
private Department dep;//所属部门
Department.java
private Integer id;//部门id
private String departmentName;//部门名
通过用户id查询用户和部门信息
User getUserAndDepById(Integer id);
returnMap映射级联结果集
第一种:
<!-- 自定义结果集,使用级联属性封装第一种方式-->
<resultMap id="myMapJiLian" type="com.yunqing.mybatis.bean.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="did" property="dep.id"/>
<result column="dep_name" property="dep.departmentName"/>
</resultMap> <!--使用级联属性-->
<select id="getUserAndDepById" resultMap="myMapJiLian">
SELECT u.id id,u.name name,u.age age,u.dep_id dep_id,dep.id did,dep.department dep_name FROM t_user u,t_dep dep WHERE
u.dep_id=dep.id AND u.id=#{id}
</select>
第二种
<!-- 自定义结果集第二种方式
association可以指定联合javabean对象
property指定那个属性是联合的对象即外键
javaType不能省略,指定这个属性对象的类型
-->
<resultMap id="myMapAss" type="com.yunqing.mybatis.bean.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<association property="dep" javaType="com.yunqing.mybatis.bean.Department">
<id column="did" property="id"/>
<result column="dep_name" property="departmentName"/>
</association>
</resultMap> <!--使用级联属性-->
<select id="getUserAndDepById" resultMap="myMapAss">
SELECT u.id id,u.name name,u.age age,u.dep_id dep_id,dep.id did,dep.department dep_name FROM t_user u,t_dep dep WHERE
u.dep_id=dep.id AND u.id=#{id}
</select>
mybatis的resultMap自定义结果映射规则的更多相关文章
- Mybatis学习笔记8 - resultMap自定义结果集映射规则
一.resultMap自定义结果集映射规则 示例如下: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; public ...
- mybatis框架-resultMap的自动映射级别-partial 和full的探讨
现在我们做一个小实验,输出一下上一个案例中没有匹配的属性,注意哦,现在user类中是有内部嵌套的复杂数据类型的 运行结果: 注意到:现在居然连userPassword都打印不出来了,原因就是user类 ...
- SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射
前言 在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置 ...
- zuul 自定义路由映射规则
zuul本射自动创建eureka中的服务的路由
- Mybatis3.0-[tp_28-29]-映射文件-resultMap_自定义结果集映射规则_及关联环境的搭建
笔记要点出错分析与总结工程组织 1.定义接口 EmployeeMapperPlus.java package com.dao; import com.bean.*; public interface ...
- mapper中通过resultMap自定义查询结果映射
mybatis中使用resultType做自动映射时,要注意字段名和pojo的属性名必须一致,若不一致,则需要给字段起别名,保证别名与属性名一致. 使用resultMap做自定义结果映射,字段名可以不 ...
- MyBatis(3)-- Mapper映射器
一.select元素 1.select元素的应用 id为Mapper的全限定名,联合称为一个唯一的标识 paremeterType标识这条SQL接收的参数类型 resultType标识这条SQL返回的 ...
- SpringCloud Zuul 路由映射规则配置
阅读目录 前言 快速入门 路由详解 Cookie与头信息 本地跳转 Hystrix和Ribbon支持 过滤器解释 动态加载 后记 回到目录 前言 本文起笔于2018-06-26周二,接了一个这周要完成 ...
- resultMap自定义某个javaBean的封装规则代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
随机推荐
- HttpResponse Entity的处理(将字符数组转为JSON)
1.问题背景 调用高德的IP地址查询接口,获取的返回值为字符串数组(如下); 因为这里只是纯字符串,并不是真正的数组,无法直接取值,所以想到看能不能转为数组或者JSON再进行取值. 2.解决: 通过在 ...
- Oracle Spatial GIS相关研究
1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...
- Django Cookie于Session
一.Cookie与Session由来 因为Http协议的特性,每一次来自用户浏览器的请求都是无状态且独立的,通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用 ...
- Oracle中的索引详解(转载)
一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...
- Android SQLite与AutoCompleteTextView
读取SQLite中的数据显示在AutoCompleteTextView中,支持动态加入SQLite中不存在的数据. package zhang.ya; import java.io.File; imp ...
- anroid之异步不如异步
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) 使用自定义的CorePoolSize为7的Executor(Executors.newFixedTh ...
- Java—IO流 字节流
IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络…),即是将数据源读入到程序的通信通 ...
- nodejs + redis/mysql 连接池问题
nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接 ...
- Installing TensorFlow on Ubuntu
1.安装方法有4种,官方推荐是第一种. virtualenv(官方推荐) "native" pip Docker Anaconda 2.基于virtualenv的 ...
- SQL Server ->> 数据一致性检查命令 -- DBCC CHECKDB
Comming soon!!! 参考文献: CHECKDB From Every Angle: Complete description of all CHECKDB stages