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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机一级实验素材题目,计算机一级EXCEL操作题整理素材(12页)-原创力文档...

素材摘录&#xff0c;文档可编辑分享PAGE 页码页码/NUMPAGES 总页数总页数单元格合并首先选中你要合并的单元格&#xff0c;然后找到EXCEL上的开始分区里的这种图标或者是含有“合并”两字的位置如图1-1&#xff0c;如果题目要求的是要你合并单元格并让内容居中&#xff0c;你就…

python爬取toefl_spark学习进度6-Python爬取数据的四个简单实例

今天本来想把昨天安装的intellij配置好&#xff0c;但是一直显示没有网络&#xff0c;网上查了相关资料也没有查出来解决办法。然后暂停了intellij的配置&#xff0c;开始做了几个Python爬取简单数据的实例&#xff0c;先做了几个最简单的&#xff0c;以后再加大难度&#xff0…

Django REST framework 版本

API 版本控制允许我们在不同的客户端之间更改行为&#xff08;同一个接口的不同版本会返回不同的数据&#xff09;。 DRF提供了许多不同的版本控制方案。 可能会有一些客户端因为某些原因不再维护了&#xff0c;但是我们后端的接口还要不断的更新迭代&#xff0c;这个时候通过…

AngularJS中的过滤器(filter)

AngularJS中的过滤器是用于对数据的格式化&#xff0c;或者筛选的函数&#xff0c;可以直接通过以下语法使用&#xff1a; {{expression|filter}} {{expression|filter1|filter2}} {{expression|filter1:param1,param2,...|filter2} 过滤器的种类有number&#xff0c;currency&…

计算机考试上传照片教程,电脑照片传到iPhone手机的详细步骤【图文】

苹果自带的iOS系统是不可以随便和电脑进行数据交换的&#xff0c;必须使用iTunes软件。许多用户为此问题困扰&#xff0c;我们有什么可以把电脑照片传到iPhone手机&#xff1f;下面我们就一起来看看把电脑照片传到iphone设备的详细步骤。具体方法如下&#xff1a;1&#xff0c;…

javaweb 导出文件名乱码的问题解决方案

fileName new String(fileName.getBytes("ISO8859-1"), "UTF-8"); 或者 String finalFileName null; if(StringUtils.contains(userAgent, "MSIE")){//IE浏览器 finalFileName URLEncoder.encode(fileName,"UTF8"); }else if(Str…

AVS 分像素运动估计优化算法

—249—AVS 分像素运动估计优化算法杨涵悦 1&#xff0c;张兆杨1&#xff0c;滕国伟2(1. 上海大学通信学院&#xff0c;上海 200072&#xff1b;2. 上海广电(集团)有限公司中央研究院&#xff0c;上海 200233)摘要&#xff1a;针对AVS 分像素运动估计的问题&#xff0c;提出一种…

计算机系统结构sw指令集,自考02325计算机系统结构复习资料六

自考生网为考生收集整理了“自考02325计算机系统结构复习资料六“以供考生们在考试前用复习资料巩固所学到的知识&#xff0c;得到更好地复习效果。注&#xff1a;由于各省教材每年都有更新、变动&#xff0c;自考复习资料并不一定出于同一自考教材版本&#xff0c;但考生们仍可…

Django REST framework 源码中提供的默认配置

DEFAULTS 是默认配置&#xff0c;IMPORT_STRINGS 是要相对应导入的类 键 大写大写大写 ########################### settings.py ########################## DEFAULTS {# Base API policiesDEFAULT_RENDERER_CLASSES: (rest_framework.renderers.JSONRenderer,rest_framew…

python 去掉空格_如何从Python DataFrame中去除空格在这个例子中

使用applymap到数据帧&#xff0c;applymap施加一拉每个单元格上的mbda函数。在lambda函数中拆分字符串&#xff08;白色空格在其中被忽略&#xff09;然后加入它。如果有一个int&#xff0c;那么你可以在lambda函数中使用if else。 from pandas import Series, DataFrame impo…

Mware HA实战攻略之五VMwareHA测试验收

【IT168 专稿】在上一篇"VMware HA实战攻略之四VMwareHA安装及配置"中&#xff08;点击&#xff09;&#xff0c;讲述了VMwareHA的概念及创建过程&#xff0c;还讲述了创建过程中要注意的一些事项。在本篇中&#xff0c;将要讲述如何在群集节点之一的ESX主机上安装虚…

AVS解码器在DSP平台上的优化

AVS( Audio Video Coding STandard)是由我国数字 音视频标准工作组制定的具有自主知识产权的第二代音视频压缩准。AVS实行1 元专利费用的原则&#xff0c;相比其它音视频编解码标准具有编码效率高、专利费用低、授权模式简单等优势。AVS 解码器的结构复杂、运算量较大&#xff…

如何重做计算机系统软件,电脑卡如何一键重做Win7旗舰版

电脑卡如何一键重做Win7旗舰版&#xff1f;小伙伴们在使用电脑的过程中系统会越来越卡&#xff0c;对于新手小白来说怎么重装系统是一个比较烦恼的问题&#xff0c;不知道如何下手&#xff0c;从哪里开始&#xff0c;那么接下来就以云骑士装机大师为例给小伙伴们讲解一下电脑卡…

Django Rest framework Request

[Django Rest framework文档翻译]-Request REST framework的Request类扩展自标准的HttpRequest&#xff0c;增加了REST framework灵活的请求解析和请求验证支持。 请求解析 REST framework的Request对象提供了灵活的请求解析&#xff0c;让你可以像一般处理普通form数据一样…

python去停用词用nltk_【NLTK】安装和使用NLTK分词和去停词

黄聪&#xff1a;PythonNLTK自然语言处理学习&#xff08;一&#xff09;&#xff1a;环境搭建 http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html 安装NLTK可能出现的问题&#xff1a; 1. pip install ntlk 2. 如果遇到缺少stopwords报错如下&#xff1a;&am…

JavaScript知识概要

JavaScript 1.简介 JavaScript简介&#xff1a; JS是运行在浏览器端的一门脚本语言&#xff0c;一开始主要用来做浏览器验证&#xff0c;但现在功能已经不止于此。 所谓脚本语言就是指&#xff0c;代码不需要编译&#xff0c;直接运行&#xff0c;并且读入…

计算机文档xsl,XSL-FO 文档

XSL-FO 文档XSL-FO 文档XSL-FO 文档是带有输出信息的 XML 文件。XSL-FO 文档存储在以 .fo 或 .fob 为文件扩展名的文件中。您也可以把 XSL-FO 文档存储为以 .xml 为扩展名的文件&#xff0c;这样做的话可以使 XSL-FO 文档更易被 XML 编辑器存取。XSL-FO 文档结构XSL-FO 的文档结…

vue项目cordova打包的android应用

准备工作nodejs、cordova、AndroidStudio这些在上一篇文章中已经说过了&#xff0c;这里就不重复说明。以此文记录vue项目用cordova打包移动app的方法。 1.创建一个cordova项目&#xff0c;如创建一个名为testapp的工程&#xff1a;cordova create testapp 2.添加安卓平台 cord…

H.264视频开发---代码移植

基于DSP系统开发的视频编解码系统&#xff0c;国内几乎都是走的移植&#xff0c;优化的路线&#xff0c;并且移植的代码&#xff0c;都是开源的。毕竟花费大量的人力&#xff0c;物力去开发一套自己的代码&#xff0c;并不见得比一些成熟的开源代码效率更高&#xff0c;健壮性更…

Django REST framework 源码解析

先放图&#xff0c;放图说话&#xff0c;可能有点长 主流程 这个颜色 从setting导入默认数据流程是 这个颜色 主流程大概流程写一下&#xff1a;as_view 实际返回view&#xff0c;并把参数{"get":"list","post":"create"}传递给view…