文档章节

MyBatis初探三

AAASSSSddd
 AAASSSSddd
发布于 2016/04/03 01:32
字数 503
阅读 40
收藏 2

一、输入类型( parameterType )

  1. 简单类型( 基本数据类型 )    

  2. HashMap

  3. 单个JavaBean( 自定义JavaBean类型 )

  4. 传入JavaBean的包装类型( 用处:比如说用户的复杂查询( 关联查询 ),需要传入用户信息,商品信息,订单信息等 )

介绍 JavaBean的包装类型( 定义VO和 Mapper.xml )



二、输出类型( resultType和resultMap )

resultType

1、resultType:输出JavaBean类型:

                           使用resultType进行映射,只有查询出来的列名和JavaBean中的属性名一致,才可以映射成功( 和dbUtils很类似 )。

SELECT username username_,sex sex_ from Users

                           如果查询出来的列名和JavaBean中的属性名完全不一致,就不会创建JavaBean对象( null )

                           如果查询出来的列名和JavaBean中的属性名有一个一致,就会创建JavaBean对象

2.resultType:输出简单类型:

                           查询出来的结果只有一行一列,才能使用简单类型


3.resultType:输出JavaBean 集合类型:

                           在mapper.xml中,查询出单个JavaBean列表,resultType指定的类型还是JavaBean类型。在Java中获取返回值类型是集合类型。

            

resultMap( 来完成高级结果映射 ):查询出的列名和JavaBean的属性名不一致,可以通过定义一个resultMap和JavaBean之间做一个关系映射
  1. 定义resultMap

  2. 使用resultMap作为mapper.xml的输出映射类型

  3. 测试

<!-- 定义resultMap
		select id id_,name name_ from Users where id=#{id} 和 Users类中的属性做映射
		type:resultMap最终所映射的JavaBean类型( 可以使用别名 )
		id:对resultMap的唯一标识
	 -->
	<resultMap id="userResultMap" type="com.ts.domain.Users">
		<!-- id标识查询结果中的唯一标识
			column:数据库表的列名
			property:JavaBean属性名
			最后将column和property做映射
		 -->
		<id column="id_" property="id"/>
		<!-- result:对普通列的映射定义 -->
		<result column="name_" property="name"/>
		
	</resultMap>
	
	
	<select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
		select id id_,name name_ from Users where id=#{id}
	</select>
@Test
public void testResultMap() throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Users user = userMapper.findUserByIdResultMap(2);
System.out.println(user);
}


© 著作权归作者所有

上一篇: MyBatis初探四
下一篇: MyBatis初探二
AAASSSSddd
粉丝 19
博文 51
码字总数 48587
作品 0
杭州
程序员
私信 提问
MyBatis初探一

一、MyBatis介绍 mybatis(持久层框架3.2.6 or 3.2.7)简单执行流程 >1.SqlMapConfig.xml(全局配置文件),配置数据源,事务和运行环境等 >2.配置映射文件(编写SQL语句):mapper.xml... >3.SqlSes...

AAASSSSddd
2016/04/02
103
0
MyBatis初探四

一、 IF 判断 需要额外定义一个查询类来封装查询对象( getXX setXX )。 编写mapper.xml文件 测试 package com.ts.dao.vo; import com.ts.domain.Users;/** * 复杂条件查询VO * @author TS *...

AAASSSSddd
2016/04/03
138
0
MyBatis初探二

一、Mybatis 的 Dao 层两种开发方式 1、原始Dao开发模式( 自己手动实现Dao层接口和实现类 ) 》 实现思路:编写Dao接口和实现类,在Dao接口中注入单例的SqlSessionFactory,通过SqlSessionFac...

AAASSSSddd
2016/04/02
81
5
C#进阶系列——DDD领域驱动设计初探(四):WCF搭建

原文:C#进阶系列——DDD领域驱动设计初探(四):WCF搭建 前言:前面三篇分享了下DDD里面的两个主要特性:聚合和仓储。领域层的搭建基本完成,当然还涉及到领域事件和领域服务的部分,后面再...

杰克.陈
2017/12/19
0
0
DreamWork/mgfinal

mgfinal 基于mgwork(servlet3.0多实例非单例)做mvc框架,mybatis做orm框架,mgioc做单例容器的mgfinal框架,mgutil做日志及常用工具方法管理,致力于打造实用的java后台底层。 适用于中小型...

DreamWork
2016/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

基于CentOS7搭建GitLab

基于CentOS7搭建GitLab 12018.11.02 16:38:51字数 959阅读 3791 本文作者:蓝雄威,叩丁狼高级讲师。原创文章,转载请注明出处。 一、简介 Git Lab GitLab是利用 Ruby on Rails 一个开源的版...

linjin200
8分钟前
2
0
random生成随机数

随机生成0到100之间的10个随机数,然后使用冒泡排序将这10个数按从小到大的顺序排序 生成10个随机数 import randomnum = range(0, 100) # 范围在0到100之间,需要用到range()函数。nums...

彩色泡泡糖
11分钟前
1
0
kubernetes 环境搭建 —— kubeadm

主从节点需要安装的服务 Master 节点 Node 节点 etcd-master Control plane(如:calico,fannel) kube-apiserver kube-proxy kube-controller-manager other apps kube-dns Control plane(如:......

lemos
14分钟前
1
0
php将字符串中的中英文数字分割

$str = "php如何将字 符串中322的字母数字Asf f45d和中文_分割?"; $arr = preg_split("/([a-zA-Z0-9]+)/", $str, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); print_r($arr); Arr......

小小小壮
14分钟前
1
0
茑屋书店理解(一)

说到实体书店,你可能会想到两个字“难做”。一是电子书大为盛行,二是纸书作为标准品,完全可以在网上购买,因此国内许多实体书店的日子是举步维艰。但是在日本有这么一家实体书店,目前已经...

Idea
18分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部