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表单 ...
随机推荐
- WPF:通过BitmapSource的CopyPixels和Create方法来切割图片
原文 WPF:通过BitmapSource的CopyPixels和Create方法来切割图片 BitmapSource是WPF图像的最基本类型,它同时提供两个像素相关的方法就是CopyPixels和C ...
- SQL Server修改标识列方法(备忘)
原文:SQL Server修改标识列方法(备忘) SQL Server修改标识列方法 ----允许对系统表进行更新 exec sp_configure 'allow updates',1 reconf ...
- 无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述)
简介 本文介绍您可能无法删除 NTFS 文件系统卷上的文件或文件夹的原因,以及如何分析造成此问题的不同原因从而解决此问题. 更多信息 注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理.因此, ...
- Vm安装
说明:都是默认安装,并不需要繁琐设置,所以没有文字说明
- 如何Update跨表修改数据
大家都知道用Update修改单个表的使用方法,现在来看一下用update 跨表修改数据: 首先创建表 a 然后创建表b 现在要把表b的company 根据ID更新到表a 方法一: update a ...
- vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)
背景 vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用. 在vista下,系统开启了UAC,如果你的 ...
- Linux软件安装及基本概念
apt 基本用法 apt-get [options] install/remove/source 软件包1 [软件包2...] 注意:软件包不要带后缀.deb 常用命令及解释如下: apt下载软件是根 ...
- Libra 加密稳定币:Facebook的"野心"?
2008年11月1日,有一个传说叫中本聪的日裔美国人,发表了一篇名为<比特币:一种点对点式的电子现金系统>的论文.2009年,比特币出世,从此开启了电子货币这个收割机器,全世界的韭菜都是一 ...
- Spring Cloud全链路追踪实现(Sleuth+Zipkin+RabbitMQ+ES+Kibana)
简介 在微服务架构下存在多个服务之间的相互调用,当某个请求变慢或不可用时,我们如何快速定位服务故障点呢?链路追踪的实现就是为了解决这一问题,本文采用Sleuth+Zipkin+RabbitMQ+ES+ ...
- ElasticSearch学习(一):ElasticSearch介绍
一.ElasticSearch是什么? ElasticSearch是一款非常强大的.基于Lucene的开源搜索及分析引擎,可以帮助你从海量数据中,快速找到相关的数据信息. 比如,当你在GitHub上搜 ...