MyBatis的学习之路(二)
上篇文章介绍了MyBatis的配置文件,现在来介绍实体映射文件Mapper.xml。
说道实体映射文件,就不得不说一下实体与表之间的映射关系:单表映射和多表映射。
a. 单表映射
1 public class Admin{ 2 private String id; 3 private String name; 4 private String password; 5 //三个属性的setter和getter方法 6 }
映射文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="yitian.study.dao.mapper"> 6 <resultMap id="adminMapper" type="com.xxx.entity.Admin"> 7 <id property="id" column="id"/> 8 <result property="name" column="name"/> 9 <result property="password" column="password"/> 10 </resultMap> 11 <select id="selectAdmin" 12 resultType="Admin" parameterType="Admin"> 13 SELECT * 14 FROM Admin 15 WHERE id = #{id} 16 </select> 17 <select id="selectAdminByName" 18 resultType="Admin"> 19 SELECT * 20 FROM Admin 21 WHERE name = #{name} 22 </select> 23 <insert id="insertAdmin" 24 useGeneratedKeys="true"> 25 INSERT INTO Admin (name, password) VALUES (#{name}, #{password}) 26 </insert> 27 <update id="updateAdmin"> 28 UPDATE Admin 29 SET password = #{password} 30 WHERE id = #{id} 31 </update> 32 <delete id="deleteAdmin"> 33 DELETE FROM Admin 34 WHERE id = #{id} 35 </delete> 36 </mapper>
View Code
映射文件包含实体类的映射和5条SQL语句,分别是增删查改以及按名称查找。每一条语句都需要一个标识符(id),将会在后面再代码中用到。如果是查询语句还需要resultType,指定返回类型。MyBatis会将数据表列名和这里指定的类型属性按名称自动映射起来。如果需要在语句中传入参数,可以使用 parameterType属性,指定Java实体类的全名或简写,然后就可以在SQL语句中使用#{}来访问参数的属性了。如果是简单的映射,那么parameterType属性还可以省略,MyBatis会自动从传入的Java对象中获取相应的属性。对于某些数据库(例如MySQL),还可以在插入的时候指定useGeneratedKeys="true",让数据库自动生成主键。
常用的方法有增删查改这几个方法。这些方法的第一个参数是前面我们在映射文件中定义的语句ID,第二个参数是要传入的参数。对于查询来说有selectOne和selectList方法,它们的区别主要在于返回个数,如果确定只返回一个对象就使用selectOne方法。
示例如下:
1 Admin admin = sqlSession.selectOne("selectAdminByName",name);
上述方法是采用字符串来指定要使用的查询。MyBatis还给我们提供了一种映射类的方式来实现sql语句。
映射类其实就是一个简单的接口。该接口中的方法和映射文件中定义的语句一一对应。接口方法的名称必须和语句id完全相同,接口方法的返回值和参数和相应的语句相对应。
public interface AdminMapper {Admin selectAdmin(int id);Admin selectAdminByName(String name);void insertAdmin(Admin admin);void updateAdmin(Admin admin);void deleteAdmin(Admin admin); }
仅仅增加映射类还不够,我们需要修改映射文件,以便让MyBatis能找到这个映射类。做法就是将映射文件的命名空间改为对应的映射类的类名。
<mapper namespace="com.xxx.mapper.AdminMapper">
在两者定义好之后,我们就可以使用了。在SqlSession上调用getMapper方法,并传入要获取的Mapper类即可。
1 AdminMapper mapper = sqlSession.getMapper(AdminMapper.class); 2 Admin s = mapper.selectAdminByName(name);
b. 多表映射
关于多表映射的书写,请参考这篇文章----《MyBatis快速入门(2):多表映射》个人觉得讲的还不错,本人就不在赘述了。
转载于:https://www.cnblogs.com/shouming/articles/7809599.html
MyBatis的学习之路(二)相关推荐
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
- Hive学习之路(二):Hive表操作详讲
操作内容简介 一.操作前的准备 二.Hive表操作详讲 1. 创建数据库 2. 查看所有数据库/表 3. 在Hive上直接操作HDFS 4. 在Hive上直接执行终端命令 5. 创建数据表/查看表的信 ...
- python 剑指offer 学习之路(二)
剑指offer 学习之路 合并两个排序的链表 树的子结构 顺时针打印矩阵 包含min函数的栈 从上往下打印二叉树 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 数组中出现次数超过 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发
前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)--MyBatis的基础知识.MybatisFirst中存在大量重复的代码.这次简化下代码: 使用MyBatis开发Dao ...
- zigbee学习之路(二)点亮LED
一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...
- MyBatis由浅入深学习总结之二:MyBatis解决Java实体类和数据库表字段不一致方法总结
在此,首先说明一点任何持久性框架都需要解决一个问题,那就是Java实体类的字段一般来说基本上会与数据库表中字段不一致,那么它们是如何解决的呢?咱们以Hibernate和SpringJDBC为例说明一下 ...
- Spring Boot 学习之路二 配置文件 application.yml
一.创建配置文件 如图所示,我们在resources文件夹中新建配置文件application.yml 结构图 二.一些基本配置 server: port: 8090 //配置端口session-ti ...
- C++学习之路二:C++
目录 二.C++ 1. C,java,C++区别 2. C++ 对象模型(C++ class底层原理) 2.1 基本对象模型与C++对象模型 2.2 C++ 构造函数模型 2.3 C++继承的底层原理 ...
- 3D点云之PCL学习之路(二)
VTK的基本知识(1) PCL使用的第三方库有 boost.eigen.FLANN.OpenNI2.Qhull.VTK. PCL的显示部分就是基于VTK来实现的.简单介绍一下这个库.主要参考依据是:& ...
最新文章
- eeglab教程系列(14)-Working with ICA Components
- 独立成分分析ICA系列4:ICA的最优估计方法综述
- linux fedora自带终端字体间距过大问题解决
- php监听mq消息,客户端监听服务端获取rabbitmq消息队列,rabbitmq有消息的时候客户端刷新页面才能获取到消息,监听没起到作用,请求各位大神指点迷津...
- Multi-thread--C++11中std::condition_variable的使用
- 列表页的动态条件搜索
- php 导航栏链接网页,怎样用php来给网页做导航栏_php实例
- sqlserver 两个数值字段相加_SQLServer 中多行数据合并成一行数据(一个字段)
- C语言 复制字符串 malloc
- 北理工计算机学院新闻,新闻睇睇睇 | 计算机学院举办第八届ACM/ICPC程序设计竞赛校内选拔赛暨北理工邀请赛...
- shell脚本语法教程
- kuka机器人程序是c语言吗,KUKA机器人示教器编程问题讲解——KUKA机器人
- python插值算法_python插值算法
- linux电子相册设计,电子相册设计报告
- php解压7z,linux解压7z文件命令
- html保持div长宽比例,div自适应宽高保持比例不变
- 16S测序 生物信息数据处理
- Python学习之【Django】
- Big Faceless Applet PDF阅读器
- 普通人怎样投资区块链