热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot整合Mybatisplus且用xml自定义sql

项目结构

项目结构

在这里插入图片描述

依赖

<?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.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xc</groupId>
<artifactId>boot-mybatis-plus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot-mybatis-plus</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<!-- <dependency>-->
<!-- <groupId>org.mybatis.spring.boot</groupId>-->
<!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!-- <version>2.1.4</version>-->
<!-- </dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

application.yaml

spring:
# rest风格的请求
mvc:
hiddenmethod:
filter:
enabled: true
datasource:
url: jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
# 3秒没查出来超时
jdbc:
template:
query-timeout: 3

mybatis-plus 实例

1、表的实体类

@Data
public class myUser {
private Long id;
private String name;
private Integer age;
private String email;
}

2、mapper包

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

3、service

public interface UserService {
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

ctrl + F12 显示封装的sql方法

controller

package com.xc.bootmybatisplus.controller;
import com.xc.bootmybatisplus.bean.Account;
import com.xc.bootmybatisplus.bean.User;
import com.xc.bootmybatisplus.service.imp.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class Controller {
@Autowired
UserServiceImpl userService;
// mybatis-puls ===========================
@ResponseBody
@GetMapping("/getAll")
public List<User> getAll(){
List<User> list = userService.list();
return list;
}
@ResponseBody
@GetMapping("/getById/id={id}")
public Object getById(@PathVariable("id") Integer id){
System.out.println("id = " + id);
Object o = userService.getById(id);
return o ;
}
}

主程序类


@SpringBootApplication
@MapperScan("com.xc.bootmybatisplus.mapper")
public class BootMybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(BootMybatisPlusApplication.class, args);
}
}

=====================自定义sql ===========================

controller 中注入service
service 中注入 mapper
mapper 和数据表 和xml文件有关

MP+XML

实体类、yaml 依赖不变

实体类

@Data
public class myUser {
private Long id;
private String name;
private Integer age;
private String email;
}

mapper

@Mapper
public interface UserMapper extends BaseMapper<User> {
// 自定义方法
public List<User> seAll();
}

service

public interface UserService {
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
// 注入自定义的方法
@Autowired
UserMapper userMapper;
// 查询所有
public List<User> seAll(){
return userMapper.seAll();
}
}

controller

package com.xc.bootmybatisplus.controller;
import com.xc.bootmybatisplus.bean.Account;
import com.xc.bootmybatisplus.bean.User;
import com.xc.bootmybatisplus.service.imp.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class Controller {
@Autowired
UserServiceImpl userService;
// xml文件自定义sql
@ResponseBody
@GetMapping("/seAll")
public List<User> seAll(){
return userService.seAll();
}
}

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="com.xc.bootmybatisplus.mapper.UserMapper">
<!--public Account getAcct(Long id);-->
<select id="seAll" resultType="com.xc.bootmybatisplus.bean.User">
select * from user
</select>
</mapper>

========================

自定义结果集

resultMap

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
private String name;
private int age;
}

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="com.xc.bootmybatisplus.mapper.UserMapper">
<resultMap id="seAllMap" type="com.xc.bootmybatisplus.resultMap.User">
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<select id="seAll" resultMap="seAllMap">
select * from user where
</select>
</mapper>

查询表的字段名和类型

controller

@ResponseBody
@RequestMapping("/getC")
public List<UserColumns> getColumns(){
return userService.getColumns();
}

service

// 查询字段和类型
public List<UserColumns> getColumns(){
return userMapper.getColumns();
}

mapper

List<UserColumns> getColumns();

xml

<select id="getColumns" resultType="com.xc.mybatisplus3boot.pojo.UserColumns">
select
COLUMN_NAME columns,
DATA_TYPE type
from information_schema.COLUMNS where table_name = 'user' and table_schema = 'school';
</select>

返回参数类

@Data
public class UserColumns {
private String columns;
private String type;
}

注意:使用自定义返回的参数时,xml中查询的字段 要和 定义的参数字段一致,起个别名

查找数据库所有表名

controller

/**
* 获取school数据库的所有表名
*/

@ResponseBody
@RequestMapping("/getTableName")
public List<String> getTableName(){
return userService.getTableName();
}

service

// 获取数据库额表名
public List<String> getTableName(){
return userMapper.getTableName();
}

mapper

// 获取school数据库的的所有表
List<String> getTableName();

xml

<select id="getTableName" resultType="string">
show tables from school
</select>

注意: resultType=“string” 代表的是在List 中存放string 数据


版权声明:本文为qq_47848696原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_47848696/article/details/117930682
推荐阅读
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
author-avatar
只属于天天的牛牛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有