Mybatis(三)返回值
一. Mybatis返回值
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性resultType的时候,MyBatis自动的给对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用(association,Collection),
<resultMap type="com.softjx.model.User" id="UserMap">
<result column="t_id" property="id"/>
<result column="t_username" property="username" />
<result column="t_password" property="password"/>
</resultMap> <!-- 查询数据表中的所有记录,并封装User对象集合 -->
<select id="selectAll" resultMap="UserMap">
select * from t_user
</select> <!-- 根据id查询数据表中的一条记录,并封装User对象 -->
<select id="selectById" resultMap="UserMap">
select * from t_user where t_id=#{id};
</select> //统计id>?记录数
public int coutUser(Integer id); //统计id>?记录数 <select id="coutUser" resultType="int">
select count(*) from t_user where t_id>#{id};
</select>
二. Mybatis注解配置
Mybatis中使用注解,就不需要编写mapper.xml文件,直接在接口代码中使用注解。
1、mybatis的全局配置文件要修改,指向接口文件路
<mappers>
<mapper class="com.softjx.dao.UserMapper"/>
</mappers>
2、不用编写mapper.xml文件,写接口,在接口中使用注解
@Select("select t_id as id,t_username username,t_password as password from t_user")
//@Select("select * from t_user")//不好自动填充javabean中的数据
//@ResultType(User.class)//不写没有关系
public List<User> selectAll(); @Select("select t_id as id,t_username username,t_password as password from t_user where t_id=#{id}")
//@Select("select * from t_user where t_id=#{id}")//不好自动填充javabean中的数据
//@ResultType(User.class)//不写没有关系
public User selectById(int id); @Select("select t_id as id,t_username username,t_password as password from t_user where t_id > #{a} and t_username=#{b}")
@ResultType(User.class)
public List<User> selectByNameId(Map<String, Object> map); @Select("select t_id as id,t_username username,t_password as password from t_user where t_id > #{0} and t_username=#{1}")
@ResultType(User.class)
public List<User> selectByNameId1(Integer id,String ame); @Select("select t_id as id,t_username username,t_password as password from t_user where t_id > #{id} and t_username=#{name}")
@ResultType(User.class)
public List<User> selectByNameId2(@Param("id")Integer id,@Param("name")String name); @Select("select * from t_user")
@Results({@Result(property="id",column="t_id")
,@Result(property="username",column="t_username")
,@Result(property="password",column="t_password") })
public List<User> selectAllUsers(); @Insert("insert into t_user (t_username,t_password) values (#{username},#{password})")
public int insertUser(User user); @Update("update t_user set t_username=#{username},t_password=#{password} where t_id=#{id}")
public int updateUser(User user); @Delete("delete from t_user where t_id=#{a}")
public int deleteUser(int id);
3、编写测试类与以前一样,没有区别。
Mybatis(三)返回值的更多相关文章
- Mybatis select返回值为map时,选取表字段的两列作为key,value
项目需要从ibatis升级到MyBatis,dao中有一个方法返回Map类型,具体是查询语句查询两个字段,将结果列表字段A的值作为key字段B的值作为value存入Map中作为结果返回: ibatis ...
- mybatis update 返回值
mybatis sql: <update id="test" parameterType="map"> update test_0731 set n ...
- mybatis之返回值总结
mybatis框架让我们能在编程中只需要编写一个接口,然后再编写mapper映射文件,无需编写接口的实现类就可以实现从数据库检索数据.这是mybatis通过动态代理,把mapper映射文件的内容转化为 ...
- 深入了解MyBatis返回值
深入了解MyBatis返回值 想了解返回值,我们须要了解resultType,resultMap以及接口方法中定义的返回值. 我们先看resultType和resultMap resultType和r ...
- Mybatis 实用篇(四)返回值类型
Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...
- Mybatis执行sql(insert、update、delete)返回值问题
数据库:Mysql 在使用mybatis的过程中对执行sql的返回值产生疑问,顺手记录一下. 结论: insert: 插入n条记录,返回影响行数n.(n>=1,n为0时实际为插入失败) up ...
- MyBatis查询结果resultType返回值类型详细介绍
一.返回一般数据类型 比如要根据 id 属性获得数据库中的某个字段值. mapper 接口: // 根据 id 获得数据库中的 username 字段的值 String getEmpNameById( ...
- mybatis中查询结果为空时不同返回类型对应返回值
今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同 ...
- iOS用三种途径实现一方法有多个返回值
以前觉得这种标题有点偏向于理论,实际开发中怎么会有这种诡异的需求,但是真正遇到了这种硬需求时觉得还是有那么点价值的,理论付诸了实践在此也就做了个整理. 以我私下开发中的一处代码为例,本意是希望有这么一 ...
随机推荐
- parameterType 和 resultType
parameterType #{} 和 ${} 1.#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?. 2.使用占位符#{}可以有效防止 ...
- .NET之父 - Anders Hejlsberg
简介 安德斯·海尔斯伯格(Anders Hejlsberg,1960.12~),丹麦人,Turbo Pascal编译器的主要作者,Delphi和.NET之父! 安德斯·海尔斯伯格曾在丹麦技术大学学习工 ...
- mybatis mysql 批量插入
场景描述: 使用mybatis操作mysql数据库,进行批量插入数据,提高代码质量和执行效率. 环境: mybatis spring mysql java xml配置文件 <insert id ...
- gridContro使用随记
gridControl设置列宽自动适应内容:绑定数据后调用如下代码即可设置.gridControl1.DataSource = m_pTablegridView1.BestFitColumns(); ...
- eclipse中project facet问题
一般出现在从别处import的项目上,只有项目文件夹上有红叉,其他地方都正常,现总结个人的几个解决方案: 有几种可能: 1,编码设置是否一致,也即是你项目原来的编码和现在eclipse用的默认编码是否 ...
- Jni中C++和Java的参数传递(转)
如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 ...
- IdentityServer4 通过 AccessToken 获取 UserClaims
实现效果:通过生成的access_token获取用户的一些信息,这样客户端请求的时候,不需要传递用户信息了. 示例配置: public void ConfigureServices(IServiceC ...
- Android 开发笔记___EditText__文本编辑框
常用属性: inputType:(代码中:setiputtype)设置输入类型,多种类型中间用"|" maxlength:最大长度,无法通过代码设置 hint:提示文本内容,(代码 ...
- html5 postMessage解决跨域、跨窗口消息传递[转载]
原文:http://www.cnblogs.com/dolphinX/p/3464056.html 一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 1 ...
- Luogu P1541 乌龟棋(NOIP2010TG)
自己的第一篇博文 祭一下祭一下 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点, ...