首页 > 其他分享 >mybatis- [04] mapper文件详解

mybatis- [04] mapper文件详解

时间:2024-05-27 15:45:36浏览次数:15  
标签:username mapper 实体类 04 映射 Mapper mybatis id

  Mybatis的Mapper文件(通常是以.xml为扩展名的文件)主要用于定义SQL语句和它们与Java接口方法之间的映射关系。以下是Mapper文件中一些常用的配置元素和属性。

 

一、mapper文件配置详解

(1)namespace:定义Mapper接口对应的唯一命名空间,用于区分不同的Mapper。(常以UserMapper类的全限定名命名)

<mapper namespace="com.example.mapper.UserMapper">
    ...
</mapper>

(2)<select>|<insert>|<update>|<delete>:分别对应SQL查询、插入、更新和删除操作。

<!--
    findById: 是mapper类中的接口方法
    parameterType: 是sql中的参数数据类型
    resultType: 是执行sql的返回结果,因为id唯一,返回的是一条记录。而数据库中一条记录就是Java中的一个实体类对象。
    所以resultType填写的是对应实体类的全限定名。
-->
<select id="findById" parameterType="int" resultType="com.example.domain.User">
    select * from user where id = #{id}
</select>


<!--
    insert: 是mapper类中的接口方法
    parameterType: 向数据库中插入的一条记录就是一个实体类对象的数据。所以是实体类的全限定名
    jdbcType=INTEGER这类语法是用来明确指定传入参数在数据库中的类型映射
    大多数情况下,Mybatis能够根据参数的Java类型自动推断出相应的JDBC类型。
    但是,在某些情况下,特别是当参数为null或者类型推断不确定时,显示指定jdbcType可以帮助Mybatis更精确地执行类型转换,避免类型不匹配的错误。
-->
<insert id="insert" parameterType="com.example.domain.User">
    insert into User (id,username,password) 
    values (#{id,jdbcType=INTEGER},#{username,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR})
</insert>

(3)<resultMap>:复杂结果集的映射,定义如何将查询结果映射到Java对象的属性上。

<resultMap id="UserResultMap" type="com.example.domain.User">
    <id property="id" column="user_id"/>
    <result property="name" column="username"/>
    <association property="address" javaType="com.example.domain.Address">
        <id property="addressId" column="address_id"/>
        <result property="city" column="city"/>
    </association>
</resultMap>

属性:

① id:resultMap的唯一标识

② type:映射的目标对象类型

③ <id>:主键字段映射

④ <result>:普通字段映射

⑤ <association>:关联对象映射

⑥ <collection>:集合属性映射

(4)<sql>(可选):定义可重用的SQL片段,提高代码复用性

<sql id="userColumns">id, username, password</sql>

(5)<include>(结合<sql>使用)

<select id="findAllUsers" resultType="com.example.domain.User">
    SELECT
        <include refid="userColumns"/>
    FROM user
</select>

(6)cache(可选):配置缓存策略,提高查询效率。

<cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>

 

 

 

二、mapper文件配置示例

2.1. 实体类和数据库的表字段映射配置(应对实体类属性和表字段命名不统一场景)

<resultMap id="BaseResultMap" type="com.example.domain.User" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="user_name" property="username" jdbcType="VARCHAR" />
    <result column="pass_word" property="password" jdbcType="VARCHAR" />
    <result column="address" property="address" jdbcType="VARCHAR" />
    <result column="birth_day" property="birthday" jdbcType="TIMESTAMP" />
  </resultMap>

type:是对应实体类的全限定名;

column="user_name":对应数据库中的字段;

property="username":对应的是实体类属性;

jdbcType="VARCHAR":是其在数据库中字段的数据类型。

 

2.2. 

 

 

 

 

 

三、标题

 

 

 

— 业精于勤荒于嬉,行成于思毁于随 —

标签:username,mapper,实体类,04,映射,Mapper,mybatis,id
From: https://www.cnblogs.com/houhuilinblogs/p/18215678

相关文章

  • Qt error: LNK1104: 无法打开文件“release\xxxxx.exe”报错解决方案
    一、问题重述出现这种报错一般是程序运行之后存在空指针问题,然后直接崩溃掉,下一次调试的时候就出现这种报错。如下图所示:二、原因分析出现这种情况是因为上次运行之后,程序的exe文件异常退出了,但是其实还在后台运行中,然后重新调试的时候exe被占用,所以QT编译器无法打开......
  • 01-Mybatis入门介绍
    MyBatis官网:mybatis–MyBatis3|简介 1)创建spingboot工程  2)配置Mybaits的相关依赖     ......
  • 【c++提高组】津津的储蓄计划(NOIP2004)
    题目描述津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 20%还给津津。因此津津制定了一个储蓄计划:每个月的......
  • XMind 2024 v24.04.10311特别版 – 一款风靡全球的思维导图软件
    软件介绍XMind2024中文破解版(XMind思维导图2024)是一款风靡全球的头脑风暴和思维导图软件,为激发灵感和创意而生.在国内使用广泛,拥有强大的功能,包括思维管理,商务演示,与办公软件协同工作等功能.XMind中文版采用全球先进的EclipseRCP软件架构,是集思维导图.头脑风暴,脑图......
  • ubuntu(20.04)外接显示器-解决外接显示器无反应问题-双屏幕显示设置
    一.ubuntu外接显示器显示设置1.接好硬件线路后,打开ubuntu系统,点击设置1.如果出现以下配置,则你的ubuntu系统当前的配置可以直接识别外接显示器,如果没有请看第二步。如果显示如下,则目前无法正确识别:接下来需要进行一些操作。二.安装nvidia驱动1.图形化安装(最方便,不容易......
  • 104.二叉树的最大深度
    给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7],返回它的最大深度3。代码:(递归法)#Definitionforabinarytreenode.#classTreeNode:......
  • 如何在 Ubuntu 22.04 上安装 OpenLDAP(转载)
    本教程适用于这些操作系统版本 Ubuntu22.04(JammyJellyfish)Ubuntu20.04(FocalFossa) 在此页 先决条件设置FQDN(完全限定域名)安装OpenLDAP包配置OpenLDAP服务器设置基本组添加新组添加OpenLDAP用户安装LDAP帐户管理器配置LDAP帐户管理器结论 ......
  • 干掉 XML、Mapper,Fluent Mybatis 牛逼
    干掉XML、Mapper,FluentMybatis牛逼前言Part1仓库地址Part2需求场景设置Part3三者实现对比1使用fluentmybatis来实现上面的功能2换成mybatis原生实现效果1、定义Mapper接口2、定义接口需要用到的参数实体SummaryQuery3、定义实现业务逻辑的mapperxml文件4、实现业......
  • ubuntu24.04安装cuda12.5版本
    概述最近新学习的JAX在使用时,提示:2024-05-2619:46:32.016388:Wexternal/xla/xla/service/gpu/nvptx_compiler.cc:760]TheNVIDIAdriver'sCUDAversionis12.2whichisolderthantheptxasCUDAversion(12.5.40).Becausethedriverisolderthantheptxasvers......
  • MyBatis Plus 分页查询操作
     这里分页查询最重要的一步是对查询条件和返回值进行了统一封装 现在有一个这样的表格要进行分页查询下面是对其进行分页查询的全步骤 首先需要封装统一的查询条件和统一的返回值就是这两部分 1.封装统一的查询条件2.封装统一的返回值 3.controller4.s......