Mybatis查询select操作
先看select标签的属性:

说几点:
resultType和resultMap都是用来表示结果集的类型的,resultType用于简单的HashMap或者是简单的pojo对象,而resultSet是用于比较复杂的对象映射。
现在来研究一下这个传入参数:
这里讲传入参数的两种形式,一种是hashmap,一种是对象
看这个sql语句:
<select id="loginSelect" resultType="JikeUser" parameterType=""hashmap>
select * from JikeUser where userName=#{userName} and password=#{password}
</select>
这个sql语句的id是loginSelect,返回类型是对象JikeUser,传入参数的类型是hashmap,但是可以看到,这里明明要两个参数啊,一个userName,一个password
然后我们来测试:(这里也会看到,这个resultType的值没有用完整的路径名,这是采用了简写机制,就是为类起了个别名,这个操作在基本配置文件用typeAliases来标识)
HashMap<String,String> hm = new HashMap();
hm.put("userName","JIkeBen");
hm.put("password","1111");
JikeUser oneTemp = session.selectOne("loginSelect",hm);
这里两个元素,一个键是userName,一个键是password,同时也是我们参数的名称,就是sql#{userName},而hashmap里的值就是我们要传入sql语句的相关信息。
也就是说,传入一个hashmap后sql会自己找到相应的键,传入相应的值。
parameterType还可以设置为对象,当传入一个对象的时候,mybatis会自动完成对象的属性到sql语句参数的自动匹配,只有在一致的情况下,它才可以自动的匹配。 然后返回的对象也可以设置为对象,这里也需要一个匹配的过程,也就是从数据库表的 列名 到 对象属性的匹配。 如果列名和对象的属性不一致的话,有两种方法,一种是采用resultMap的形式,很灵活;另一种是为sql语句中的列名起一个别名,这个别名和对象属性一致就行了。
刚刚我们都只是获得一个结果,那么如果是多个结果,获得多个对象呢?
如果返回多行记录的话,Mybatis会自动把它封装成一个list
<select id="selectJiKeUserList" resultType="JiKeUser">
select * from JiKeUser
</select>
List<JiKeUser> ap = session.selectList("selectJiKeUserList");
下面讲一下resultMap,这也是一个返回操作的设定,但这个和resultType只能有一个成立。
resultMap可以解决一些比较复杂的映射关系,比如对象当中含有另一个对象的引用,首先要使用的话要设定一个resultMap标签
<resultMap id="JiKeUserMap" type="JiKeUser">
//指定对象的属性,到列名之间的关系关系,下面几个也都是
<id property="id" colum="id"/>
<result property="userName" colum="userName"/>
<result property="password" colum-"password"/>
</resultMap>
这里我么的类名和属性名是一致的,如果不一致,也可以在map当中设定这样的一个匹配关系。
然后再使用的时候,要在sql语句中说明resultMap是哪一个
<select id="selectUsers" resultMap="JiKeUserMap">
select id,userName,password from JiKeUser
</select>
Mybatis查询select操作的更多相关文章
- Mybatis查询select 传单个参数不识别,找不到
今天, Mybatis查询select 传单个参数不识别,找不到 解决办法: 加上jdbc=varchar #{XXX,jdbc=VARCHAR}
- MySQL和mybatis查询相关
0.mybatis的xml文件头 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapp ...
- springmvc+mybatis+redis实现查询插入操作
最近在学习redis,虽然现在还不是很熟练.不过可以进行简单的框架整合开发. IDE:我使用的是IDEA.springmvc+spring+mybatis的整合这个我就不多说了,下面我们先进行这块的整 ...
- 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...
- 稀疏数据压缩查询方法:Rank & Select 操作
1.稀疏数据的例子 对于网络图对应的节点关联矩阵.数据生成的哈希表等,这些存储起来是稀疏的,这样我们就会想到需要压缩空间.但是在压缩存储空间的同时,还要支持高效的查询操作. Rank & Se ...
- Mybatis的select查询的三种方式
1.首先建立一个测试的dao public interface IStudentDao { // 根据姓名查询 List<Student> selectStudentsByName(Str ...
- MyBatis 查询
User.java package com.mycom.mybatis_1.bean; import java.io.Serializable; public class User implement ...
- mybatis查询语句的背后
转载请注明出处... 一.前言 在先了解mybatis查询之前,先大致了解下以下代码的为查询做了哪些铺垫,在这里我们要事先了解,myabtis会默认使用DefaultSqlSessionFactory ...
- mybatis查询语句的背后之参数解析
转载请注明出处... 一.前言 通过前面我们也知道,通过getMapper方式来进行查询,最后会通过mapperMehod类,对接口中传来的参数也会在这个类里面进行一个解析,随后就传到对应位置,与sq ...
随机推荐
- Hibernate中的自己定义类型——UserType、CompositeUserType
一.UserType Hibernate拥有自己定义映射表属性的机制.主要通过实现接口UserType,详细的UserType: import java.sql.PreparedStatement; ...
- composer-安装插件包
上一步完成后,选定国内镜像地址,以为下载插件包做准备 https://pkg.phpcomposer.com/ 安装完componser后使用下面这条命令即可(设置国内镜像地址): composer ...
- react-router-redux
reducer与按需加载组件的时候,一并加载对应的state,具体流程就不多说了,看代码! reducer import { combineReducers } from 'redux' import ...
- Android开发:怎样隐藏自己的app应用
本文主要介绍怎样通过改动AndroidManifest.xml清单文件来达到隐藏自身应用的目的,不是隐藏第三方应用.为了不浪费大家时间.特此说明. 转载请注明作者xiong_it和链接:http:// ...
- iOS xmpp的使用
#import "AppDelegate.h" //#import "DBAreaItem.h" #pragma mark - #pragma mark Pri ...
- csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中
这是是用julia来实现画图.julia有三个画图库:Winston.Gadfly.PyPlot 这里用的是pyplot,事实上他是基于matplotlib的 1.首先在juno里安装两个库 juno ...
- 图像配准建立仿射变换模型并用RANSAC算法评估
当初选方向时就由于从小几何就不好.缺乏空间想像能力才没有选择摄影測量方向而是选择了GIS. 昨天同学找我帮他做图像匹配.这我哪里懂啊,无奈我是一个别人有求于我,总是不好意思开口拒绝的人.于是乎就看着他 ...
- 让Linq的OrderBy支持动态字段
使用linq的OrderBy,如果明确知道是哪个字段,当然很容易: IQueryable<User> userQuery = ...; userQuery.OrderBy(u => ...
- (ros/moveit)cob_simulation報錯
cob_simulation報錯 依照官網說明 http://wiki.ros.org/cob_bringup_sim 1. git clone https://github.com/ipa320/c ...
- caution
做好需求更改的准备,提高代码的扩展性和可维护性:预留出修改bug和需求的时间:对需求理解透彻再开始写代码:代码不要写死,防止需求变动.