当前位置: 首页 > news >正文

5.3 Mybatis映射文件 - 零基础入门,轻松学会查询的select标签和resultMap标签

CSDN成就一亿技术人


本文目录

  • 前言
  • 一、创建XML映射文件
  • 二、MybatisX插件安装
  • 三、mapper标签
  • 四、select标签
    • UserMapper接口方法
    • UserMapper.xml
  • 五、resultMap标签
    • 定义resultMap标签
    • 修改select标签
  • 总结


前言

MyBatis的强大在于它的语句映射,它提供了注解和XML映射文件两种开发方式,都是为了减少我们的使用成本,屏蔽JDBC代码细节,节省代码,从而让我们更专注于SQL代码!

通过 《上文》,我们学会了常用12种注解开发,本文主要讲解XML映射文件方式开发,轻松学会创建XML映射文件和常用的select标签resultMap标签的用法。


一、创建XML映射文件

XML映射文件的目录位置通常推荐创建在resources下,例如实战案例创建如下:

tg-book-dalresources下创建与UserMapper.java对应的Xml映射文件UserMapper.xml,如下图:

在这里插入图片描述

要求:路径相同,名称相同。

不同行不行?可以通过mybatis.mapper-locations配置!建议保持默认相同!

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="org.tg.book.dal.mapper.UserMapper"></mapper>

二、MybatisX插件安装

这里推荐安装使用MybatisX插件,非常方便在接口与XML映射文件之间来回跳转!以及可以生成标签

IDEA的File-》Settings-》Plugins 搜索MybatisX安装即可!

在这里插入图片描述


三、mapper标签

mapper标签,它是最顶级的标签,也就是XML根标签,通过namespace属性指定对应的接口,比如这里指定的是:org.tg.book.dal.mapper.UserMapper,这样接口和XML映射文件就产生了关联,接口通过JDK动态代理生成实现类时,就会读取XML映射文件的对应配置!

如何配置呢?常用的XML标签有:

  • select标签(对应写查询SQL语句)
  • resultMap标签(结果映射,上文曾介绍过)
  • insert标签(对应写插入INSERT语句)
  • update标签(对应写修改UPDATE语句)
  • delete标签(对应写删除DELETE语句)
  • sql标签(对应写SQL语句,这个SQL语句可被其他语句引用的可重用的语句块)

四、select标签

我们先删除上文的注解方式,换成XML映射文件的方式来实现!

UserMapper接口方法

@Param指定参数名

public interface UserMapper {User selectByUserNamePassword(@Param("userName") String userName,@Param("password") String password);
}

这时MybatisX插件会提示一个错误,把鼠标悬浮在方法上,会提示selectByUserNamePassword方法在xml中没有定义,我们点击Generate statement

MybatisX生成接口方法对应的xml

UserMapper.xml

这时,在UserMapper.xml中会生成一个select标签使用id属性指定对应的接口方法名,使用resultType属性指定返回类型,如下图:

Mybatis 生成select标签

这里依然有一个警告:XML tag has empty body,是因为我们没有写对应的查询select语句SQL,我们在select标签中补充SQL语句如下:

select * from user where user_name =#{userName} and password =#{password}

SQL中的参数使用#{}作为占位符
Mybatis select sql

实际的效果与上文使用的@Select注解相同!


五、resultMap标签

同样的,运行后你会发现【User对象】的userId并没有取到值,原因是【user表】的字段名叫id,而不是userId,名称不同所以无法获取到对应的值,我们通过resultMap标签方式解决。

定义resultMap标签

<resultMap id="UserMap" type="org.tg.book.dal.po.User"><id column="id" jdbcType="INTEGER" property="userId"/><result column="user_name" jdbcType="VARCHAR" property="userName"/><result column="password" jdbcType="VARCHAR" property="password"/>
</resultMap>

resultMap标签说明:

  • 通过id属性定义唯一标识,type属性定义结果类型
  • 通过id标签指定主键列, result标签指定非主键列
    • property指定对象的属性名
    • column指定数据表的列名
    • jdbcType指定数据表的字段类型

修改select标签

使用resultMap属性代替了resultType属性,resultMap属性内指定刚定义的resultMap id名称。

Mybatis resultMap

实际的效果与上文使用的@Results和@Result注解相同!

OK,到这,我们就使用XML映射文件方式,完整实现了接口方法selectByUserNamePassword!

总结

写一个数据库查询方法,简单来说,步骤如下:

  1. 创建接口对应的xml映射文件
  2. 创建查询方法对应的select标签
  3. 写查询selec语句SQL
  4. 【可选】如果【数据库字段】与【PO对象属性】不一致,需要增加结果映射resultMap标签,然后在select标签使用resultMap属性指定resultMap标签
http://www.lryc.cn/news/61100.html

相关文章:

  • “华为杯”研究生数学建模竞赛2020年-【华为杯】B题:汽油辛烷值优化建模(附获奖论文和python代码实现)
  • C6678开发概述与Sys/bios基本使用
  • python算法中的图算法之网络流算法(详解二)
  • 企业电子招投标采购系统之项目说明和开发类型源码
  • ERTEC200P-2 PROFINET设备完全开发手册(8-1)
  • 手撕Twitter推荐算法
  • JAVA多态性测试的基本实验------JAVA入门基础教程
  • 小说作者推荐: 妄鸦合集
  • MySQL-自带工具介绍
  • 12个你应该知道的Python库
  • 【数据分析之道-NumPy(七)】numpy字符串函数
  • 【Linux】Linux基本指令(1)
  • 更全面的对比GPT4和Claude对MLIR的掌握能力
  • 阿里ARouter 路由框架解析
  • 大型医院健康体检管理系统源码(PEIS)
  • java 获取时间的方法
  • Block原理(二)- 用白话说说底层源码,不扯代码
  • springboot整合knife4j接口文档成公共模块使用
  • 软件测试需要学什么
  • 【蓝桥杯省赛真题17】python删除字符串 青少年组蓝桥杯python编程省赛真题解析
  • C# LINQ 查询语句和方法的区别及使用
  • 【nacos配置中心】源码部分解析
  • Kotlin 1.6.0 的新特性
  • nextjs13临时笔记
  • 云计算与区块链之间有什么区别?
  • sed命令常用例子
  • MB510 3BSE002540R1在机器视觉工业领域最基本的应用
  • nightingale-0-介绍单机二进制部署
  • 一个从培训学校走出来的测试工程师自述....
  • 关于pyqt的一些用法