mybatisplus如何自定义xml文件-源码下载

news2024/12/13 10:44:20

1、问题概述?

MybatisPlus通过BaseMapper为我们带来了丰富的基础功能操作,非常使用。

但是在实际的操作中,我们还需要大量的自定义SQL的的时候,这时候就需要自定义xml,从而自定义sql语句。

2、创建工程

2.1、项目结构

2.2、在数据库中创建测试表格

表格需要创建主键

CREATE TABLE `student` (

  `stu_id` varchar(50) NOT NULL,

  `stu_name` varchar(25) DEFAULT NULL,

  `stu_sex` varchar(255) DEFAULT NULL,

  `stu_both` varchar(255) DEFAULT NULL,

  `stu_addr` varchar(200) DEFAULT NULL,

  `stu_pwd` varchar(10) DEFAULT NULL,

  `stu_age` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`stu_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;



insert  into `student`(`stu_id`,`stu_name`,`stu_sex`,`stu_both`,`stu_addr`,`stu_pwd`,`stu_age`) values

('1001','晓春1','0','1990-05-06 15:27:56','安徽合肥','1001',NULL),

('1002','小春11','1','1998-05-06 15:27:56','安徽黄山','1002',NULL),

('1004','汤晓春','1','1997-05-06 15:27:56','安徽合肥','1004',NULL),

('1005','十一郎','1','1992-05-06 15:27:56','安徽合肥','1005',NULL),

('1006','十二郎','0','1991-05-06 15:27:56','安徽合肥','1006',NULL),

('1007','十三郎','1','1991-05-06 15:27:56','','1006',NULL),

('1008','十四郎','1','1991-05-06 15:27:56',NULL,'1006',NULL),

('1009','十五郎','1','1991-05-06 15:27:56',NULL,'1006',NULL),

('1010','','1','2020-05-08 00:00:00','','',NULL),

('1011',NULL,NULL,NULL,NULL,NULL,NULL);

2.3、工程的pom.xml配置我呢见

重点1:引入springboot+mybatisplus+mysql包

重点2:引入如下配置,否则工程不扫描xml配置文件

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes><include>**/*.xml</include></includes>
    </resource>
</resources>

【pom.xml配置我呢见】

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.16</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>mybatisplusxml</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>mybatisplusxml</name>
    <description>mybatisplusxml</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

        <!--mybatisplus包-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

</project>

2.4、在application.yml中配置相关信息

spring:
  #数据库连接配置,未使用连接池
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test11?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull
    username: root
    password: 123456
# 配置mybatis-plus
mybatis-plus:
  configuration:
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false # 别名配置
  type-aliases-package:  com.*.*.bean
  mapper-locations: classpath:/com/example/mybatisplusxml/mapper/*.xml

2.5、创建Student实体bean

记得添加set和get及构造器

@TableName("student")
public class Student {
    @TableId(value = "stu_id")
    private Integer stu_id;
    private String stu_name;
    private String stu_sex;
    private String stu_age;
    private String stu_addr;
    private String stu_pwd;

}

2.6、创建StudentMapper接口

public interface StudentMapper extends BaseMapper<Student> {
    public List<Student> queryStudentByIdAndName(Student student);
}

2.7、创建StudentMapper.xml配置文件

namespace的地址是StudentMapper接口的全限定名称

<?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="com.example.mybatisplusxml.mapper.StudentMapper">
    <!--通过username查询firstname-->
    <select id="queryStudentByIdAndName" resultType="student" parameterType="student">
       select * from student
       where stu_id=#{stu_id} and stu_name=#{stu_name}
    </select>

</mapper>

2.8、创建StudentService业务层类

@Service
public class StudentService {
    @Autowired(required = false)
    private StudentMapper studentMapper;

    public List<Student> queryStudentByIdAndName(Student student){
        return studentMapper.queryStudentByIdAndName(student);
    }

}

2.9、创建StudentController控制层类

@Controller
public class StudentController {
    @Autowired
    private StudentService studentService;

    @RequestMapping("/queryStudentByIdAndName")
    @ResponseBody
    public List<Student> queryStudentByIdAndName(Student student){
        System.out.println(student.getStu_id());
        System.out.println(student.getStu_name());
        return studentService.queryStudentByIdAndName(student);
    }

}

2.10、配置启动类

重点1@MapperScan注解扫描mapper

@SpringBootApplication
@MapperScan("com.example.mybatisplusxml.mapper")
public class MybatisplusxmlApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisplusxmlApplication.class, args);
    }
}

2.11、通过浏览器测试

http://localhost:8080/queryStudentByIdAndName?stu_id=1001&stu_name=晓春1

3、源码下载

https://download.csdn.net/download/tangshiyilang/90078053

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

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

相关文章

经纬度坐标系转换:全面解析与实践

摘要 在地理信息处理与地图应用开发领域&#xff0c;经纬度坐标系的转换起着举足轻重的作用。不同的地图服务提供商&#xff0c;如百度和高德&#xff0c;各自采用了特定的坐标系&#xff0c;并且在某些情况下需要进行相互转换以及与其他通用坐标系之间的转换。本文将深入探讨…

Qt之第三方库‌QXlsx使用(三)

Qt开发 系列文章 - QXlsx&#xff08;三&#xff09; 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.添加头文件 2.写入数据 3.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用…

C++类的运算符重载

目标 让自定义的类直接使用运算符运算 代码 头文件及类定义 #include <iostream>using namespace std; class Complex {int rel;int vir; public:void show(){cout <<"("<<this->rel<<","<<this->vir<<&quo…

SQL注入--Sqlmap使用

一.GET型注入 介绍&#xff1a;注入点在URL里的称之为GET型注入。 单目标 sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id1" sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id1&page10" -p page sqlmap.py -u "http://127.0.0.1/sqli/Less-…

前端编辑器JSON HTML等,vue2-ace-editor,vue3-ace-editor

与框架无关 vue2-ace-editor有问题&#xff0c;ace拿不到&#xff08;brace&#xff09; 一些组件都是基于ace-builds或者brace包装的 不如直接用下面的&#xff0c;不如直接使用下面的 <template><div ref"editor" class"json-editor"><…

知行之桥EDI系统V2024 12月9111版本更新

知行之桥EDI系统V2024于12月推出版本更新&#xff08;版本号&#xff1a;9111&#xff09;&#xff0c;在原有产品的基础上进行了一系列的新增、更改和修复&#xff0c;以确保 EDI 和 MFT 集成尽可能的简单化。 主要特性 新增 新增EDI 交易伙伴管理控制台 交易伙伴管理控制台…

nmap详解

Nmap&#xff08;Network Mapper&#xff09;是一个开放源代码的网络探测和安全审核的工具。由于它的功能强大&#xff0c;被广泛应用于网络安全领域。以下是Nmap的一些主要功能及其在实战中的应用举例。 Nmap的主要功能&#xff1a; 端口扫描&#xff1a;检测目标主机上开放…

HarmonyOS 5.0应用开发——属性动画

【高心星出品】 文章目录 属性动画animateTo属性动画animation属性动画 属性动画 属性接口&#xff08;以下简称属性&#xff09;包含尺寸属性、布局属性、位置属性等多种类型&#xff0c;用于控制组件的行为。针对当前界面上的组件&#xff0c;其部分属性&#xff08;如位置属…

求解自洽场方程

Let’s break down the problem and the solving process step-by-step. Problem Overview The problem appears to be related to linear algebra and possibly quantum mechanics (given the mention of “eigenvalues” and “Hamiltonian” in the Chinese text). We hav…

yarn 安装问题

Couldn’t find package “regenerator-runtime” on the “npm” registry. Error: Couldn’t find package “watch-size” on the “npm” regist 标题Error: Couldn’t find package “babel-helper-vue-jsx-merge-props” on the “npm” registry. Error: Couldn’t f…

Edge SCDN的独特优势有哪些?

强大的边缘计算能力 Edge SCDN&#xff08;边缘安全加速&#xff09;是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术&#xff0c;智能调度使用户就近获取所需内容&#xff0c;为用户提供稳定快速的访问…

360极速浏览器不支持看PDF

360安全浏览器采用的是基于IE内核和Chrome内核的双核浏览器。360极速浏览器是源自Chromium开源项目的浏览器&#xff0c;不但完美融合了IE内核引擎&#xff0c;而且实现了双核引擎的无缝切换。因此在速度上&#xff0c;360极速浏览器的极速体验感更佳。 展示自己的时候要在有优…

神经网络权重矩阵初始化:策略与影响

文章目录 一、权重矩阵初始化&#xff1a;神经网络训练的关键起点&#xff08;一&#xff09;初始化的重要性及随机特性&#xff08;二&#xff09;不同初始化方法的探索历程零初始化&#xff1a;简单却致命的选择&#xff08;仅适用于单层网络&#xff09;标准初始化&#xff…

【算法day13】二叉树:递归与回溯

题目引用 找树左下角的值路径总和从中序与后序遍历构造二叉树 今天就简简单单三道题吧~ 1. 找到树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 我们…

OpenCV实验:图片加水印

第二篇&#xff1a;图片添加水印&#xff08;加 logo&#xff09; 1. 实验原理 水印原理&#xff1a; 图片添加水印是图像叠加的一种应用&#xff0c;分为透明水印和不透明水印。水印的实现通常依赖于像素值操作&#xff0c;将水印图片融合到目标图片中&#xff0c;常用的方法…

路由器、二层交换机与三层交换机的区别与应用

路由器、二层交换机和三层交换机是常见的网络设备&#xff0c;常常协同工作。它们都可以转发数据&#xff0c;但在功能、工作层级以及应用场景上存在差异。 1. 工作层级 三者在OSI模型中的工作层级不同&#xff1a; 路由器&#xff1a; 工作在 网络层&#xff08;第三层&#…

Motionface RTASR 离线实时语音识别直播字幕使用教程

软件使用场景&#xff1a; 直播、视频会议、课堂教学等需要实时字幕的场景。 1&#xff1a;系统要求 软件运行支持32位/64位windows 10/11系统&#xff0c;其他硬件要求无&#xff0c;无显卡也能实时识别字幕。 2&#xff1a;下载安装 链接:百度网盘 请输入提取码 提取码&#…

从零开始认识主板

主板&#xff08;Motherboard&#xff09;是计算机中最重要的硬件之一&#xff0c;它连接并协调了计算机中所有的其他硬件组件。以下是主板的基本组成部分及其功能&#xff0c;从零开始帮助你了解主板&#xff1a; 1. 主板的定义与作用 主板是计算机的核心电路板&#xff0c;用…

Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候&#xff0c;有一个需求是限制相机倾斜角&#xff0c;也就是鼠标中键调整视图俯角时&#xff0c;不能过大&#xff0c;一般 pitch 角度范围在 0 至 -90之间&#xff0c;-90刚好为正俯视。 在网上查阅了很多资料&#xff0c;发现并没有一个合适的…

【HarmonyOS之旅】HarmonyOS概述(一)

目录 1 -> HarmonyOS简介 2 -> HarmonyOS发展历程 3 -> HarmonyOS技术特性 3.1 -> 硬件互助&#xff0c;资源共享 3.1.1 -> 分布式软总线 3.1.2 -> 分布式设备虚拟化 3.1.3 -> 分布式数据管理 3.1.4 -> 分布式任务调度 3.1.5 -> 分布式连接…