MyBatis select标签的用法
From《MyBatis从入门到精通》
第一步,在接口中添加方法:
public interface UserMapper {
SysUser selectById(Long id);
}
第二步,完成映射文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="tk.mybatis.simple.mapper.UserMapper">
<!--
对接口和接口方法映射的讲解:
XML与接口是通过namespace的值设置为接口的全限定名称进行关联
XML与接口中的方法是通过select标签的id属性值和定义的接口方法名一致进行关联
如果接口方法中没有和XML中的id属性值相对应,启动程序就会报错。
映射XML和接口的命名需要符合如下规则:
1.当只只用XML而不使用接口的时候,namespace的值可以设置为任意不重复的名称
2.标签的id属性值在任何时候都不能出现英文句号“.”,并且同一个命名空间下不能出现重复的id
3.因为接口中的方法是可以重载的,所以接口中所有的同名方法会对应XML中的同一个id的方法。
最常见的用法是,同名方法中其中一个增加衣蛾RowBound类型的参数用于实现分页查询。
-->
<!--
resultMap是一种很重要的配置结果映射的方法,resultMap的属性:
id:必填,并且唯一。
type:用于配置查询列所映射到的Java对象类型
extends:选填,可以配置当前的resultMap继承自其他的resultMap,属性值为继承resultMap的id
autoMapping:选填,用于配置是否启用非映射字段(没有在resultMap中配置的字段)的自动映射功能
该配置可以覆盖全局的autoMappingBehavior配置(!!!针对没有在resultMap中配置的字段)
resultMap包含的标签:
<constructor>:配置用构造方法注入结果,包含两个字标签
<idArg>:id参数,标记结果作为id(唯一值),可以帮助提高整体性能
<arg>:注入到构造方法的一个普通结果
<id>:id参数,标记结果作为id(唯一值),可以帮助提高整体性能
<result>:主导到Java对象属性的普通结果
====================================================
后面会详细讲解的部分
====================================================
<association>:一个复杂的类型关联,许多结果将包装成这种类型
<collection>:复杂类型的集合
<discriminator>:根据结果值来决定使用哪个结果映射
<case>:基于某些值的结果映射
====================================================
====================================================
id和result标签包含的属性:
column:从数据库得到的列名(来源于数据库的数据)
property:映射到列结果的属性(来源与resultMap标签type属性指明的对象的属性)
===================================================================
这部分我还没有遇到过,还不是很熟悉
===================================================================
javaType:如果映射到一个JavaBean,Mybatis通常可以自动的判断属性的类型
如果映射到HashMap,则需要明确的指明javaType。
jdbcType:列对应的数据库类型。JDBC类型仅仅需要对插入、更新、删除操作可能为空
的列进行处理。这是JDBC jdbcType的需要,而不是MyBatis的需要。
typeHandler:使用这个属性可以覆盖默认的类型处理器。这个属性值是类的完全限定
名或者类型别名。
===================================================================
===================================================================
-->
<resultMap id="userMap" type="tk.mybatis.simple.model.SysUser">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="userPassword" column="user_password"/>
<result property="userEmail" column="user_email"/>
<result property="userInfo" column="user_info"/>
<result property="headImg" column="head_img" jdbcType="BLOB"/>
<result property="createTime" column="user_password" jdbcType="TIMESTAMP"/>
</resultMap>
<!--
<select>:映射查询语句使用的标签
id:命名空间唯一标识符,可用来代表这句话
resultMap:用来设置返回值的类型和映射关系
#{id}:MyBatis SQL中使用预编译参数的一种方式,这个id需要与形式参数一模一样么
-->
<select id="selectById" resultMap="userMap">
SELECT * FROM sys_user WHERE id = #{id}
</select>
</mapper>
第三步,如何在程序中使用
@Test
public void testSelectById(){
SqlSession sqlSession=getSqlSession();
try{
/*
这个地方和以前的代码比,已经发生了变化:
List<Country> countryList = sqlSession.
selectList("tk.mybatis.simple.mapper.CountryMapper.selectAll");
以前这个地方,使用的是从sqlSession中通过xml文件的命名空间集selectId找到一个方法,
而现在直接通过接口的方式,相对而言十分的方便。
*/
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser user = userMapper.selectById(1L);
Assert.assertNotNull(user);
Assert.assertEquals("admin",user.getUserName());
}finally {
sqlSession.close();
}
}
MyBatis select标签的用法的更多相关文章
- MyBatis foreach标签的用法
From<MyBatis从入门到精通> 一.foreach实现in集合 1.映射文件中添加的代码: <!-- 4.4 foreach用法 SQL语句有时会使用IN关键字,例如id i ...
- MyBatis bind标签的用法
From<MyBatis从入门到精通> <!-- 4.5 bind用法 bind标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中. 需求: concat函数连接字符串,在M ...
- MyBatis if标签的用法
<!-- 4.1.1 在WHERE条件中使用if 需求: 实现一个用户管理高级查询功能,根据输入的条件去检索用户信息.这个功能 还需要支持以下三种情况:当只有输入用户名时,需要根据用户名进行模糊 ...
- mybatis001-动态标签Trim用法
Mybatis动态标签Trim用法 一.<trim></trim>标签用法 示例一: select * from user <trim prefix="WHER ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...
- MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])
参数获取 之前我们都是采用#{}的方式进行参数传递,其实MyBatis还有另外的参数传递方式${} 使用方法相同,但是还是有很大区别的 这里做一个测试: <select id="get ...
- select标签multiple属性的用法
前些日子公司让做一个功能模块.对于里面一个小功能费了些周折,现将其总结一下: 一.实现效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2FvaHVh ...
- [刘阳Java]_MyBatis_映射文件的select标签入门_第3讲
1.Mybatis映射文件的<select>标签主要帮助我们完成SQL语句查询功能,<select>标签它包含了很多属性,下面简单对<select>标签的属性做一个 ...
- SpringMVC +mybatis+spring 结合easyui用法及常见问题总结
SpringMVC +mybatis+spring 结合easyui用法及常见问题总结 1.FormatString的用法. 2.用postAjaxFillGrid实现dataGrid 把form表单 ...
随机推荐
- PowerDesigner 在通过jdbc连接数据库时 Could not Initialize JavaVM!
最近用到PowerDesigner的逆向工程,从数据库中逆向生成模型,本想使用odbc连接的,但是需要安装驱动,mysql的还好弄,oracle对我来讲实在是有些麻烦,看到能用jdbc连接,就想试试, ...
- Python:Pandas学习
import pandas as pd import numpy as np s = pd.Series([1, 3, 6, np.nan, 44, 1]) df= pd.DataFrame(np.r ...
- 开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石
微信于2013年开源的ibco库,是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上.libco在2013年的时候作为腾讯六大开源项目首次开源,ibco支持后台敏捷 ...
- 冒泡排序C#实现,使用委托,包括三种方式:Fun<>,匿名方法,Lambda表达式
冒泡排序是一种简单的排序方法,适合于小量数字排序,对于大量数字(超过10个),还有更高效的排序方法. 这里的实现的冒泡排序,需实现功能: 不仅数字排序,还要对任意对象排序 示例: 对People对象的 ...
- Delphi中Menu设置Images属性后快捷按键下划线被隐藏解决方法
现象:MainMenu设置Images属性后,看不到快捷按键的下划线,如:新建(&N) 分析:VCL中Menus.pas单元的代码,看到如下语句procedure TMenuItem.Adva ...
- 很幽默的讲解六种Socket IO模型 Delphi版本(自己Select查看,WM_SOCKET消息通知,WSAEventSelect自动收取,Overlapped I/O 事件通知模型,Overlapped I/O 完成例程模型,IOCP模型机器人)
很幽默的讲解六种Socket IO模型(转)本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教. 一:select模型 二:WSAAsyncSel ...
- 初探 C# 8 的 Nullable Reference Types
溫馨提醒:本文提及的 C# 8 新功能雖已通過提案,但不代表將來 C# 8 正式發布時一定會納入.這表示我這篇筆記有可能白寫了,也表示您不必急著瞭解這項新功能的所有細節,可能只要瞄一下底下的「概要」說 ...
- Google+团队如何测试移动应用 - from Google Testing Blog
How the Google+ Team Tests Mobile Apps by Eduardo Bravo Ortiz “移动第一”在当下已成为很多公司的口头禅.但是能够用一种合理的方法来测试移动 ...
- vue的checkbox或多选的select的代码例子
另外一种实现checkbox的vue绑定方法代码: 给v-model绑定一个相同的数组类型的属性: <div id="app"> <label>jack&l ...
- Spring Bean的3种装配方式
Bean常用的装配方式有3种: 基于xml的装配 基于Annotation(注解)的装配 基于Java类的装配 基于xml的装配 在xml文件中配置Bean. 如果依赖很多,xml配置文件会很臃肿,后 ...