Java课题笔记~ MyBatis映射文件

news2024/11/23 21:12:43

映射文件是MyBatis中的重要组成部分,它包含了开发中编写的SQL语句、参数、结果集等。映射文件需要通过MyBatis配置文件中的<mapper>元素引入才能生效。MyBatis规定了映射文件的层次结构。

1、映射文件概览

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="MyDog">
    <!--开启此映射文件的缓存-->
    <cache/>
    <!--指定引用的命名空间,当此命名空间执行DML操作修改时,
    被引用的命名空间中的缓存也会失效-->
    <cache-ref namespace=""/>
    <!--参数映射集-->
    <parameterMap id="" type="">
        <parameter property="" jdbcType="" javaType="" typeHandler=""/>
    </parameterMap>
    <!--sql块-->
    <sql id=""></sql>
    <!--映射结果集-->
    <resultMap id="" type="">
        <id property="" column=""/>
        <result property="" column="" />
    </resultMap>
    <!--查询元素-->
    <select id="" resultType="" parameterType=""></select>
   <!--新增元素-->
    <insert id="" parameterType=""></insert>
    <!--删除元素-->
    <delete id=""></delete>
    <!--更新元素-->
    <update id="" parameterType=""></update>
</mapper>

< select >元素的常用属性:

 

<sql>元素:

通过<sql>元素来包裹常用的列名,当需要使用此列名时,可以利用<include>元素的refid属性来指定。在需要修改列名时,通过修改<sql>元素即可实现全文件的列名修改。

<sql>元素设计的初衷在于简化列名的书写,在一个命名空间内,重复的列名将会给维护带来很大的麻烦,因此,MyBatis使用<sql>元素来包含这些列名,使其得到重用。

2、模糊查询总结

写法为:

1、使用“${...}”,语法为“like '${...}'”; -->and sName LIKE '%${sName}%'

<select id="query" resultType="student">
    SELECT * FROM students
    <where>
        <if test="null != sId and '' != sId">
            and sId = #{sId}
        </if>
        <if test="null != sName and '' != sName">
            and sName LIKE '%${sName}%'
        </if>
        <if test="null != sAge and '' != sAge">
            and sAge = #{sAge}
        </if>
    </where>
</select>

2、使用“#{...}”,语法为“like '#{...}'”; -->and sName LIKE "%"#{sName}"%"

<select id="query" resultType="student">
    SELECT * FROM students
    <where>
        <if test="null != sId and '' != sId">
            and sId = #{sId}
        </if>
        <if test="null != sName and '' != sName">
            and sName LIKE "%"#{sName}"%"
        </if>
        <if test="null != sAge and '' != sAge">
            and sAge = #{sAge}
        </if>
    </where>
</select>

3、使用[CONCAT]函数连接参数形式,语法为“like CONCAT('%',#{...},'%')”。-->and sName LIKE concat("%",#{sName},"%")

<select id="query" resultType="student">
    SELECT * FROM students
    <where>
        <if test="null != sId and '' != sId">
            and sId = #{sId}
        </if>
        <if test="null != sName and '' != sName">
            and sName LIKE concat("%",#{sName},"%")
        </if>
        <if test="null != sAge and '' != sAge">
            and sAge = #{sAge}
        </if>
    </where>
</select>

4、使用<bind> --><bind name="bindName" value="'%'+sName+'%'" />

    <select id="query" resultType="student">
        <!--命名元素-->
        <bind name="bindName" value="'%'+sName+'%'" />
        SELECT * FROM students
        <where>
            <if test="null != sId and '' != sId">
                and sId = #{sId}
            </if>
            <if test="null != sName and '' != sName">
                and sName LIKE #{bindName}
            </if>
            <if test="null != sAge and '' != sAge">
                and sAge = #{sAge}
            </if>
        </where>
    </select>

注:#{}和${}的区别:

“#{}”表示占位符:在组成SQL的过程中,先将此位置占位,之后将取得的值赋值到此位置,在类型上有严格的限制。【相当于用PreparedStatement,不会有SQL注入风险】

“${}”表示拼接符:在组成SQL的过程中,此符号将取得的值直接拼接到相应位置。

【相当于用Statement,拼接SQL,有SQL注入风险】

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

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

相关文章

浅谈document.write()输出样式

浅谈document.write()输出样式 js中的最基本的命令之一&#xff1a;document.write&#xff08;&#xff09;&#xff0c;用于简单的打印内容到页面上&#xff0c;可以逐字打印你需要的内容——document.write("content"),这里content就是需要输出的内容&#xff1b;…

2023 ChinaJoy 圆满闭幕,FairGuard游戏加固亮相 BTOB 展区

提振行业 产业复苏 2023年7月28日至7月31日&#xff0c;第二十届中国国际数码互动娱乐展览会( ChinaJoy)于上海新国际博览中心圆满举办。本届ChinaJoy作为疫情结束后的第一个国际性数字娱乐领域的重要产业盛会&#xff0c;对于提振行业信心、加快产业复苏、增进国际间的交流与…

如何成为linux服务端C++开发专家?

想成为linux服务端C开发专家&#xff0c;只能自己慢慢学&#xff0c;在实践中摸索&#xff0c;我敢说没几个人说自己是linux服务端C开发专家 ! 这里说下鹅厂关于Linux C方向 的使用场景 。 进腾讯最好的方向是 Linux C方向&#xff0c;目前腾讯由于历史原因&#xff0c;还有游…

16、外部配置源与外部配置文件及JSON配置

外部配置源与外部配置文件及JSON配置 application.properties application.yml 这些是配置文件&#xff0c; 命令行配置、环境变量配置、系统属性配置源&#xff0c;这些属于配置源。 外部配置源的作用&#xff1a; Spring Boot相当于对Spring框架进行了封装&#xff0c;Spri…

java环境搭建 Ubuntu Linux

jdk的安装和配置环境变量 使用apt sudo apt install default-jdk若是安装成功了在终端输入java -version来查看是否安装成功 使用官网下载的jdk包 直接在百度上搜索jdk&#xff0c;选择图片这个 网址:jdk下载网址 若是arm就选择带有arm的&#xff0c;反之选择x64的&#…

智能疏散照明控制系统在世博文化中心的应用

安科瑞 华楠 摘要:世博文化中心作为世博园区一轴四馆的核心建筑之一&#xff0c;其建筑面积大&#xff0c;人员密集&#xff0c;人流通道众多&#xff0c;疏散路径复杂。为了确保火灾发生时人员能安全、迅速的疏散&#xff0c;在电气设计中设置了一套智能疏散照明系统。通过介…

wps 预加载项插件本地开发启动项目打开wps 客户端,未看到加载项菜单,

wps 预加载项插件本地开发启动项目打开wps 客户端&#xff0c;未看到加载项菜单&#xff0c;请检查本地c盘安装目录下“jsplugins.xml”信息是否添加成功 如下图 name 插件项目 url 本地插件运行地址及端口 <jsplugins><jspluginonline name"wps-soft-copyright…

什么是软件检测证明材料,如何才能获得软件检测证明材料?

一、什么是软件检测证明材料 软件检测证明材料是指在软件开发和发布过程中&#xff0c;为了证明软件的质量和合法性&#xff0c;进行的一系列检测和测试的结果的集合。它是软件开发者和用户之间信任的桥梁&#xff0c;可以帮助用户了解软件的性能和安全性&#xff0c;让用户放…

docker 哨兵模式和集群模式安装Redis7.0.12

docker 哨兵模式和集群模式安装Redis7.0.12 1.下载镜像 1.1 配置阿里云加速源 墙外能访问https://hub.docker.com/_/redis 的可跳过 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录后选择左侧的镜像工具>镜像加速器&#xff0c;获取加速器地址&#…

企业数字化转型的核心是什么?

如今&#xff0c;各行各业都在布局数字化转型&#xff0c;而对于中国传统制造业来说&#xff0c;数字化转型更是当务之急&#xff0c;但由于制造企业组织、业务、产品和价值链的复杂性&#xff0c;为数字化转型带来诸多障碍。这篇就来重点分享下&#xff0c;制造业如何做好数字…

传智教育院校邦首期图灵计划—黑马菁英班正式开班!

7月30日&#xff0c;大家期待已久的首期图灵计划——黑马菁英班正式开班&#xff01;班级开班的那一刻&#xff0c;同学们的学习热情立即被点燃&#xff01; 这个班级匹配当代大学生特点&#xff0c;在课程设置、讲师团队、班级管理等方面做到顶配&#xff0c;建立课程教学与人…

使用Logistic回归预测心脏病 -- 机器学习项目基础篇(4)

世界卫生组织估计&#xff0c;五分之四的心血管疾病&#xff08;CVD&#xff09;死亡是由于心脏病发作。本研究旨在精确确定有很好机会受CVD影响的患者的比例&#xff0c;并使用Logistic回归预测总体风险。 Logistic回归是一种统计和机器学习技术&#xff0c;基于输入字段的值对…

YOLOv8-pose姿态模型笔记1

YOLOv8-pose关键点模型输出&#xff0c;每个框输出51个信息&#xff0c;即17个关键点以及每个关键点的得分 COCO的annotation一共有17个关节点。 分别是&#xff1a;“nose”,“left_eye”, “right_eye”,“left_ear”, “right_ear”,“left_shoulder”, “right_shoulder”…

18款奔驰S320升级后排座椅加热功能,提升后排乘坐舒适性

奔驰座椅加热就简单多了&#xff0c;是在原车座椅海绵表面安装一层加热垫&#xff0c;加热垫里面是加热丝&#xff0c;通过电机热的原理&#xff0c;快速升温&#xff0c;把热量传递给车主。 奔驰的座椅加热系统是通过车门按键来控制&#xff0c;3档调节&#xff0c;温度从低到…

Michael.W基于Foundry精读Openzeppelin第18期——DoubleEndedQueue.sol

Michael.W基于Foundry精读Openzeppelin第18期——DoubleEndedQueue.sol 0. 版本0.1 DoubleEndedQueue.sol 1. 目标合约2. 代码精读2.1 结构体Bytes32Deque2.2 length(Bytes32Deque storage deque) && empty(Bytes32Deque storage deque)2.3 at(Bytes32Deque storage de…

【Java可执行命令】(十三)策略工具policytool:界面化创建、编辑和管理策略文件中的权限和配置 ~

Java可执行命令之policytool 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 使用方式3.2 使用技巧3.3 注意事项 4️⃣ 应用场景&#x1f33e; 总结 1️⃣ 概念 在Java平台上&#xff0c;安全性是至关重要的。为了提供细粒度的安全管理机制&#xff0c;Java引入了policytool命令。p…

LuckyFrameweb LuckyFrameClient 自动化测试平台 安装部署 使用教程

LuckyFrameweb 自动化测试平台 jdk安装 maven安装 LuckyFrameweb安装 仓库地址 使用maven 打包jar包 docker-compose安装mysql #cat mysql-start.yml version: "3" services:mysql:image: mysql:5.7restart: alwaysenvironment:- TZAsia/Shanghaiports:- 3306:3…

分享:交流负载箱 0~9.999A 可调 步进1mA

前言 最近去客户那边&#xff0c;发现一个问题&#xff0c;他们的交流供电单元 测试很不方便。 需求 供电单元输出&#xff1a; AC220V 50HZ&#xff1b;漏电保护保护功能过载报警功能&#xff1b;超载保护功能&#xff1b; 总而言之&#xff0c;他们需要一台 交流的电子负…

Unity 画线OnPopulateMesh函数VertexHelper

一个画图表&#xff08;折线图&#xff0c;树状图&#xff0c;饼状图&#xff0c;雷达图&#xff09;的插件。 底层使用UGUI中的重写了OnPopulateMesh这个方法&#xff0c; 用来实现鼠标画线的功能。 OnPopulateMesh(VertexHelper vh) {} using System; using System.Collec…

Elisp之buffer-substring-no-properties用法(二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…