当前位置: 首页 > 编程日记 > 正文

mybatis 使用resultMap实现数据库的操作

resultType:直接表示返回类型

resultMap:对外部resultMap的引用

二者不能同时使用

创建一个实体类Role和User

public class Role {private Integer id;private String roleCode;private String roleName;//省略set、get方法

创建User类(在User中有roleId   1对多关系)

public class User {private Integer id;private String userName;private String userCode;private String userPassword;private Integer roleId;private String roleName;
  //省略set、get方法

创建RoleMapper接口

public interface RoleMapper {public void  add(Role role);public void update(Role role);public void delete(Role role);public List<Role> getRoleList();}

创建UserMapper接口

//接口的名字和xml的名字一样,这样xml中的namespace就不用改
public interface UserMapper {//接口名的方法名一定要和xml中的id名一样public int count();public void add(User user);public void update(User user);public void delete(User user);public List<User> getUserList();//根据roleid获取用户列表public List<User> getUserByRoleId(Role role);
}

创建RoleMapper.xml

<?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="cn.bdqn.dao.RoleMapper"><select id="getRoleList" resultType="Role">select * from role</select><insert id="add" parameterType="Role">insert into role (roleCode,roleName) values (#{roleCode},#{roleName})</insert><update id="update" parameterType="Role">update role set roleCode=#{roleCode},roleName=#{roleName} where id=#{id}</update><delete id="delete" parameterType="Role">delete from role where id=#{id}</delete>
</mapper>

创建UserMapper.xml

<?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+id(方法名)的名字就可以访问 -->
<mapper namespace="cn.bdqn.dao.UserMapper"><!-- id要唯一的,一般是下拉类的方法名 --><!-- 返回的是什么类型int --><select id="count" resultType="int">select count(1) from user</select><!-- 增加 --><insert id="add" parameterType="User">insert into user(userCode,userName,userPassword)values (#{userCode},#{userName},#{userPassword})</insert><!-- 修改 --><update id="update" parameterType="User">update user set userCode=#{userCode},userName=#{userName},userPassword=#{userPassword} where id=#{id}</update><!-- 删除 --><delete id="delete" parameterType="User">delete from user where id=#{id}</delete><!-- 查询 --><select id="getUserList" resultType="User">select * from user</select>
</mapper>

加入这个方法用resultMap

 <!-- resultMap中的id随便取,但要保证id唯一就行 --><!-- type指的是后台的javabean的类名 映射到哪里 --><resultMap type="User" id="userMap"><!-- 显示的字段 --><result property="id" column="id"/><result property="userCode" column="userCode"/><result property="userName" column="userName"/><result property="roleName" column="roleName"/></resultMap><!-- 拿roleID --><select id="getUserByRoleId" parameterType="User" resultMap="userMap">select u.*,r.roleName as roleName from user u,role r where u.roleId = r.id and u.roleId=#{id}</select>

在mybatis-config.xml中添加<mapper resource="cn/bdqn/dao/RoleMapper.xml"/>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 通过这个配置文件完成mybatis与数据库的连接 -->
<configuration><!-- 引入 jdbc.properties 文件--><properties resource="jdbc.properties"/><!-- alias别名 --><!-- 配置mybatis的log实现LOG4J -->
<settings><setting name="logImpl" value="LOG4J" />
</settings><typeAliases><!-- <typeAlias type="cn.bdqn.pojo.User" alias="User"/> --><!-- 用这个比较方便,不用一个一个写。包下的就是他的类名 --><package name="cn.bdqn.pojo"/></typeAliases><environments default="development"><environment id="development"><!--配置事务管理,采用JDBC的事务管理  --><transactionManager type="JDBC"></transactionManager><!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 --><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!-- 将mapper文件加入到配置文件中  将来mapper文件很多所以是mappers --><mappers><mapper resource="cn/bdqn/dao/UserMapper.xml"/><mapper resource="cn/bdqn/dao/RoleMapper.xml"/></mappers>
</configuration>

测试

//查询
    @Testpublic void getUserListTest(){SqlSession sqlSession = null;try {List<User> userList = new ArrayList<User>();sqlSession = MyBatisUtil.createSqlSession();userList = sqlSession.selectList("cn.bdqn.dao.UserMapper.getUserList");for(User user:userList){logger.debug("user的id==="+user.getId());}} catch (Exception e) {// TODO: handle exception
            e.printStackTrace();sqlSession.rollback();}finally{MyBatisUtil.closeSqlSession(sqlSession);}}

转载于:https://www.cnblogs.com/xuerong/p/4959539.html

相关文章:

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course 三维产品可视化课程 教程大小&#xff1a;5.38G 1280X720 含课程素材文件 你会学到什么 项目简介及其必须包含的内容 蓝图以及如何获得和使用 逐步建模流程 如何制作UV和纹理 用UV投射材料 生成…

Spring MVC 和WebFlux 区别

本节主要对比了WebMvc 和 WebFlux两个Web框架,Spring已经为我们开发做了很大努力了,所以在合适的场景下这种异步框架还是非常可行的。但是还要考虑后期其它异步框架是否能够完善,全链路异步才能发挥异步最大的优势。

Cygwin鸡毛蒜皮

2019独角兽企业重金招聘Python工程师标准>>> Windows命令乱码: cygwin控制台mintty的编码缺省是UTF-8, 右键调整mintty选项[text] 改编码为GBK UNIX路径和Windows路径互转: 使用cygpath工具. 如: #cd cygpath C:\\Windows 安装包管理器apt-cyg: 安装: # svn --fo…

Using unique option prefix myisam-recover instead of myisam-recover-option

[转载]关于mysql error.log报"Using unique option prefix myisam-recover instead of myisam-recover-options ..."转载&#xff1a;http://blog.csdn.net/cloud_xy/article/details/21756601启动时日志中有这个警告的&#xff1a;[Warning] Using unique option pr…

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:aac&#xff0c;48000 Hz 语言:英语 中文字幕&#xff08;机译&#xff09;原英文字幕 |大小:33.0 GB | 145节课程| (36h 18m) 你会学到什么 云…

Java学习总结:8

链表 class Node2{ //定义一个节点private String data;private Node2 next; //要保存的下一个节点public Node2(String data){ //每一个Node2对象都必须保存相应的数据this.datadata;}public void setNext(Node2 next){this.nextnext;}public Node2 getNext(){return this.…

(原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员

10.3 接口的实现 在继续前&#xff0c;先讨论一下如何定义和实现接口。第9章介绍了接口定义的方式与类相似&#xff0c;使用的代码如下&#xff1a; interface IMyInterface {// Interface members. } 接口成员的定义与类成员的定义相似&#xff0c;但有几个重要的区别&#…

JVM架构解析

本文阐述了JVM的构成和组件&#xff0c;配图清晰易懂&#xff0c;是学习Java开发者的入门必读文章。 每个Java开发人员都知道字节码经由JRE&#xff08;Java运行时环境&#xff09;执行。但他们或许不知道JRE其实是由Java虚拟机&#xff08;JVM&#xff09;实现&#xff0c;JV…

cmd实用命令

1.netstat 查看电脑端口状况 实际应用举例&#xff1a;查看某软件坚监听的电脑端口。 在任务管理器中选择列...&#xff0c;打开PID的显示。在这里查看某个应用程序的线程ID是多少。例如QQ&#xff1a;4904. 运行&#xff0c;cmd&#xff0c;输入netstat -ano&#xff0c;显示当…

嵌入式BootLoader技术内幕(三)

四、 关于串口终端 在 boot loader 程序的设计与实现中&#xff0c;没有什么能够比从串口终端正确地收到打印信息能更令人激动了。此外&#xff0c;向串口终端打印信息也是一个非常重要而又有效的调试手段。但是&#xff0c;我们经常会碰到串口终端显示乱码或根本没有显示的问题…

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020 时长:16h 55m |视频:. MP4 1280x720&#xff0c;30 fps(r) |音频:AAC&#xff0c;44100 Hz&#xff0c;2ch |大小:15.5 GB 共62小节课程 流派:电子学习|语言:英语中文字幕&#xff08;机译&#xff09;含…

Java学习总结:9

继承 继承性是面向对象的第二大主要特征&#xff0c;而继承性要解决的就是代码重用的问题&#xff0c;利用继承性可以从已有的类继续派生出新的子类&#xff0c;也可以利用子类扩展出更多的操作功能。 继承的实现 继承的格式 class 子类 extends 父类 {}子类实际上是将父类…

转 小辉_Ray CORS(跨域资源共享)

前言&#xff1a;上一篇文章在写如何使用JSONP实现跨域请求的时候&#xff0c;偶然间提到CORS&#xff0c;即Cross-Origin Resource Sharing&#xff08;跨域资源共享&#xff09;。虽然前些天也看了一下CORS相关的文章&#xff0c;但是今天兴趣一来还是亲自地写篇博客来研究一…

使用dd命令复制ASM磁盘的spfile

通过下面sql查询参数文件在ASM磁盘中的AU分布SELECT x1.file_number,x1.name,x2.GROUP_KFFXP,x2.DISK_KFFXP,x2.AU_KFFXP,x3.pathFROM (SELECT *FROM (SELECT t1.GROUP_NUMBER, t1.FILE_NUMBER, t2.NAME, rownum AS rnFROM v$asm_file t1LEFT JOIN v$asm_alias t2ON t1.FILE_NU…

[转载]IPMSG(飞鸽传书)协议翻译

/***********************************************************本人(ypxing)根据下面的协议&#xff0c;C语言写的ipmsg(聊天&#xff0c;文件/文件夹传输)*请参见&#xff1a;http://blog.chinaunix.net/u1/35100/showart_689330.html**************************************…

SketchUp Pro 2021基础入门学习视频教程

SketchUp Pro 2021基础入门学习视频教程 1280X720 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 流派:电子学习|语言:英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:74节课(7h 31m) |大小:4.9 GB 含课程工程文件…

Java学习总结:10

覆写 在子类定义属性或方法时&#xff0c;有可能出现定义的属性或方法与父类同名的情况&#xff0c;这样的操作就称为覆写。 方法的覆写 当子类定义了和父类的方法名称、返回值类型、参数类型及个数完全相同的方法时&#xff0c;就称为方法的覆写。 class A1{public void f…

ubuntu中启用ssh服务

ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。如果需要ssh登陆到别的电脑&#xff0c;需要安装openssh-client&#xff0c;该程序ubuntu是默认安装的。而如果需要从远程连接到本机&#xff0c;则需要安装openssh-server&#xff0c;该程序需要自己安装。…

JVM 常见异常及内存诊断

栈内存溢出 栈内存大小设置&#xff1a;-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB&#xff0c;window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码&#xff0c;由于递归深度没有限制且没有设置出口&#xff0c;每次方法的调用都…

解决文字无法缩小的问题

在css设置文字大小的时候&#xff0c;到12px 的时候你在怎么缩小他&#xff0c;他的大小就是不变font-size&#xff1a;百分比来控制也不起作用-webkit-transform: scale(0.8); -o-transform: scale(1); display: inline-block; 转载于:https://www.cnblogs.com/xinlinux/p/408…

asp.net图片浏览器效果

技术来源于同学会实践 前台设计 <% Page Language"C#" AutoEventWireup"true" CodeFile"txh.aspx.cs" Inherits"txh" %> <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head runat&qu…

Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading

Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading CGCookie–Blender材质和着色基础 教程大小解压后&#xff1a;3.1G 共6大章 45小节课…

Java学习总结:11(final关键字)

final关键字 在Java中final称为终结器&#xff0c;在Java中可以使用final定义类、方法和属性。 一.使用final定义的类不能再有子类&#xff0c;即&#xff1a;任何类都不能继承以final声明的父类。 在设计类的时候&#xff0c;如果这个类不需要有子类&#xff0c;类的细节不…

2022-2028年中国汽车制动器行业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国汽车制动器行业市场行业相关概述、中国汽车制动器行业市场行业运行环境、分析了中国汽车制…

[转]优秀编程的“艺术”

优秀的代码是一件艺术品&#xff1f;或者软件工艺宣言言过其实了&#xff1f;成为一名“优秀”的程序员&#xff0c;有什么要求&#xff1f; 设想你雇佣了一名水管工&#xff0c;让他更换地下室的旧管道。这个家伙在工作之前、之中、之后&#xff0c;他就没有停止过谈论他的管道…

洛谷 P5019 铺设道路(差分)

嗯... 题目链接&#xff1a;https://www.luogu.org/problem/P5019 首先简化一下题意&#xff1a; 给定一个长为N的数组&#xff0c;每次操作可以选择一个区间减去1&#xff0c;问最少多少次操作可以将数组中的数全变成0 N≤100000 思路&#xff1a; 首先对于第一个数字d_1我们至…

1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere

1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere 1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere 时长1h 2m 1280X720 MP4 语言&#xff1a;英语中文字幕…

BIO、NIO、AIO详解

BIO(Blocking I/O)就是传统的Java IO编程,其相关的类和接口在java.io包下。BIO是同步阻塞的,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)服务器端启动一个,注册端口,调用accpet方法监听客户端的Socket连接客户端启动Socket对服务器进行通信,默认情况下服务器端需要对每个客户建立一个线程与之通讯。

Java学习总结:12

多态性 1.方法的多态性&#xff1a;重载和覆写 重载&#xff1a;同一个方法名称&#xff0c;根据不同的参数类型及个数可以完成不同的功能&#xff1b; 覆写&#xff1a;同一个方法&#xff0c;根据不同的实例化的子类对象不同&#xff0c;所完成的功能也不同。 2.对象的多态性…

10万字总结Java8到21新特性详解

Java 8 是Java历史上一个重大的版本更新,发布于2014年3月18日。Lambda 表达式是在 Java 8 中引入,并且被吹捧为 Java 8 最大的特性。它是函数式编程的的一个重要特性,标志着 Java 向函数式编程迈出了重要的第一步。或者其中parameters:是 Lambda表达式的参数列表,可以为空或包含一个或多个参数。->:是 Lambda 操作符,用于将参数和 Lambda 主体分开。expression:是 Lambda 表达式的返回值,或者在主体中执行的单一表达式。