SpringBoot整合Mybatis注解实战(一)-- 插入数据

2023-11-18

1.数据库数据表的创建

(1)首先,在本地数据库中创建一个新数据库,再此命名为test_mybatis_1;创建一个数据表user,创建脚本如下:

/* user表创建脚本 */
CREATE TABLE `user` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(128) DEFAULT NULL COMMENT '名称',
    `phone` varchar(16) DEFAULT NULL COMMENT '用户手机号',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `age` int(4) DEFAULT NULL COMMENT '年龄',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

(2)插入一些数据:

2.创建springboot项目,编写配置文件

(1)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.2.11.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hlx</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</name>
    <description>Test project for Spring Boot</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>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.3.0.RELEASE</version>
        </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>1.3.2</version>
        </dependency>
        <!-- 引入第三方数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

(2)配置文件application.properties

#mybatis.type-aliases-package=net.xdclass.base_project.domain
#可以自动识别
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test_mybatis_1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
#如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

(3)启动类添加mapper扫描

package com.hlx.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.hlx.springboot.mapper")
public class SpringbootApplication {

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

}

 

3.编写需要使用到的工具类

(1)响应结果类:JsonData.java

package com.hlx.springboot.domain;

import java.io.Serializable;

/**
 * 功能描述:响应结果类
 */
public class JsonData implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private Integer code; // 状态码 0 表示成功,1表示处理中,-1表示失败
    private Object data; // 数据
    private String msg;// 描述

    public JsonData() {
    }

    public JsonData(Integer code, Object data, String msg) {
        this.code = code;
        this.data = data;
        this.msg = msg;
    }

    // 成功,传入数据
    public static JsonData buildSuccess() {
        return new JsonData(0, null, null);
    }

    // 成功,传入数据
    public static JsonData buildSuccess(Object data) {
        return new JsonData(0, data, null);
    }

    // 失败,传入描述信息
    public static JsonData buildError(String msg) {
        return new JsonData(-1, null, msg);
    }

    // 失败,传入描述信息,状态码
    public static JsonData buildError(String msg, Integer code) {
        return new JsonData(code, null, msg);
    }

    // 成功,传入数据,及描述信息
    public static JsonData buildSuccess(Object data, String msg) {
        return new JsonData(0, data, msg);
    }

    // 成功,传入数据,及状态码
    public static JsonData buildSuccess(Object data, int code) {
        return new JsonData(code, data, null);
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    @Override
    public String toString() {
        return "JsonData [code=" + code + ", data=" + data + ", msg=" + msg
                + "]";
    }

}

(2)Json工具类:JsonUtils.java

package com.hlx.springboot.utils;

import java.io.IOException;

import org.springframework.util.StringUtils;

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUtils {

    private static ObjectMapper objectMapper = new ObjectMapper();

    //对象转字符串
    public static <T> String obj2String(T obj) {
        if (obj == null) {
            return null;
        }
        try {
            return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //字符串转对象
    public static <T> T string2Obj(String str, Class<T> clazz) {
        if (StringUtils.isEmpty(str) || clazz == null) {
            return null;
        }
        try {
            return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

4.编写用户实体类(domain/User.java)

package com.hlx.springboot.domain;

import java.util.Date;

public class User {

    private int id;

    private String name;

    private String phone;

    private int age;

    private Date createTime;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

5.编写访问数据库的接口(mapper/UserMapper.java)

package com.hlx.springboot.mapper;

import com.hlx.springboot.domain.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 *  访问数据库的接口
 */
public interface UserMapper {

    @Insert("INSERT INTO user(name,phone,create_time,age) VALUES(#{name}, #{phone}, #{createTime},#{age})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    // keyProperty java对象的属性;keyColumn表示数据库的字段
    int insert(User user);


}

6.编写service层接口及其实现类

(1)service/UserService.java

package com.hlx.springboot.service;

import com.hlx.springboot.domain.User;

public interface UserService {

    public int add(User user);

}

(2)service/impl/UserServiceImpl.java

package com.hlx.springboot.service.impl;

import com.hlx.springboot.domain.User;
import com.hlx.springboot.mapper.UserMapper;
import com.hlx.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public int add(User user) {
        userMapper.insert(user);
        int id = user.getId();
        return id;
    }
}

7.编写Controller层(controller/UserController.java)

package com.hlx.springboot.controller;


import com.hlx.springboot.domain.JsonData;
import com.hlx.springboot.domain.User;
import com.hlx.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("add")
    public Object add(String msg) {
        User user = new User();
        user.setAge(18);
        user.setCreateTime(new Date());
        user.setName("Rose");
        user.setPhone("10010004");
        int id = userService.add(user);

        return JsonData.buildSuccess(id);
    }


}

8.运行程序,访问http://localhost:8080/user/add,结果如下。

9.此时访问数据库查看数据,发现数据已经成功插入。

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot整合Mybatis注解实战(一)-- 插入数据 的相关文章

  • 将 Hibernate 对象序列化为 JSON 时抛出异常

    好吧 我正在使用 Hibernate 将一个小型数据库加载到一些表示表的类并与数据库交互 一切都很好 我真的可以看到所有结果 而且我没有任何空字段 所有这些都已被使用 这里我展示了 主 类 表 import javax persistenc
  • 无法在类对象的 ArrayList 中存储值。 (代码已编辑)

    这基本上是一个 Java 代码转换器 它涉及一个 GUI 让用户输入类类型 名称和方法 为了存储值 我创建了一个类VirtualClass与ArrayList
  • Google App Engine with Java - 运行 javac.exe 编译器时出错

    在 Windows XP 上 刚刚下载并解压谷歌应用程序引擎java sdk to C Program Files appengine java sdk 我已经安装了jdk C Program Files Java jdk1 6 0 20
  • 防止 Spring Boot 注册 Spring Security 过滤器之一

    我想禁用安全链中的 Spring Security 过滤器之一 我已经看到了防止 Spring Boot 注册 servlet 过滤器 https stackoverflow com questions 28421966 prevent s
  • 请参阅 Java EE eclipse 调试中的 POST 参数

    我在调试 Java EE 方面没有经验 我更像是一个 javascript 人 我需要查看哪些 HTTP POST 参数到达服务器端 我在表单将其操作指向的 jsp 文件中放置了一个断点 现在我在调试变量窗口中找不到 POST 内容 他们在
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • 添加 spring-security-oauth2 后无法实例化接口 org.springframework.context.ApplicationListener

    我添加后spring security oauth2到我的 pom xml
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • Java:由 HTTP 连接创建的等待连接线程存活时间很长

    我有一个服务器端代码 用于检查 SOAP 服务是否已启动 代码如下 String response while response length 0 try final URL url new URL DummySoapServiceURL
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 公共方法与公共 API

    在干净的代码书中 有一个观点是 公共 API 中的 Javadocs 同样 Effective java 一书也有这样的内容 项目 56 为所有公开的 API 元素编写文档注释 所以这就是我的问题 所有公共方法都被视为公共 API 吗 它们
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个
  • Java、Spring、Hibernate找不到org.springframework.orm.hibernate3.LocalSessionFactoryBean

    我正在尝试制作 spring hibernate ant 项目 目前我收到此错误 HTTP Status 500 type Exception report message description The server encountere

随机推荐

  • 字节对齐和字节序

    1 字节对齐 1 什么是字节对齐 内存空间是按字节划分 理论上可以从任意起始地址访问任意类型的变量 但实际上在访问特定类型变量是经常在特定的内存地址访问 这就需要各种数据类型按照一定的规则进行排列 而不是一个接一个紧接着排放 简单的讲就是数
  • C++拷贝构造函数—类临时对象的构建与析构

    一 对象的概念 对象的基本概念 我们最开始学习数据类型的时候 我们会学到 int a 10 这种写法 这种写法是数据类型 标识符的形式 标识符来给我们程序运行中需要使用到的内存空间取名字 这个标识符一般指的是变量 而利用常量来对我们向系统申
  • 针对“PL2303HXA自2012已停产,请联系供货商”问题的解决办法

    连接nanopi友善之臂时遇到这种情况 首先尝试更新驱动程序 在更新驱动程序后当时可以正常用putty连接板子 但在第二天又出现了这个问题 其实就是驱动程序太新了 安装旧版驱动程序就可以 查看现在的驱动程序版本 是2021年的 打开设备管理
  • 全网最详细中英文ChatGPT-GPT-4示例文档-语句情绪分类从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    从0到1快速入门语句情绪分类应用场景 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node js接口请求示例 cu
  • android从一个应用跳转到另一个应用

    获取launcher中的应用列表 Intent intent new Intent intent setAction Intent ACTION MAIN intent addCategory Intent CATEGORY LAUNCHE
  • 奇异谱分解轴承故障诊断代码编写

    答 我可以为您提供一些建议 以帮助您编写奇异谱分解轴承故障诊断代码 1 首先 要确定故障类型 以便确定诊断策略 2 然后 可以使用多种故障诊断技术 包括奇异谱分析 以及其他故障诊断技术 3 为了更好地掌握故障特征 可以使用相关的轴承数据库
  • 最近在学动态规划,很有意思的算法(1)拿金币

    问题描述 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 输入格式 第一行输入一个正整数n 以下n行描述该方
  • 代码扫描工具对比

    1 概述 随着网络的飞速发展 各种网络应用不断成熟 各种开发技术层出不穷 上网已经成为人们日常生活中的一个重要组成部分 在享受互联网带来的各种方便之处的同时 安全问题也变得越来越重要 黑客 病毒 木马等不断攻击着各种网站 如何保证网站的安全
  • asm:常见指令大全

    常见指令大全 算数指令 INC 指令 DEC 指令 ADD 指令 SUB指令 MUL指令 IMUL指令 DIV指令 IDIV指令 逻辑指令 AND指令 OR指令 XOR 指令 TEST指令 NOT指令 交换指令 xchg 比较指令 CMP指
  • MySQL(二)——基本操作

    MySQL操作 数据库操作 创建数据库 列出 MySQL数据库列表 使用数据库 判断当前所处的数据库 删除数据库 数据库表操作 数据库中的所有表 创建数据表 查询表结构 查询指定表的建表语句 修改表名 删除表单 删除该表并重新再创建 格式化
  • VUE锚点跳转增加滑动效果

    首先我通过直接的锚点跳转是实现不了滑动效果 所以首先实现锚点的跳转效果 先给点击的地方 设置一个点击事件 a 跳转 a 然后是被跳转的地方添加 class industry
  • 只需6行代码教你使用Spire.Doc在Java中将 Word 转为 Tiff

    Spire Doc for Java 是一款专业的Java Word组件 开发人员使用它可以轻松地将Word文档创建 读取 编辑 转换和打印等功能集成到自己的Java应用程序中 本文介绍如何使用Spire Doc for Java将Word
  • linux:ubuntu命令行扩容

    参考 ubuntu 20 04 逻辑卷 ext4 文件系统扩容 mob604757006a49的技术博客 51CTO博客 总结 准备步骤 链接里没有说明 我参考了其他的帖子增加的一步 1 关闭虚拟机 右键虚拟机 选择 设置 2 在虚拟机设置
  • android 富文本框架_史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(二)

    本文为霍格沃兹测试学院学员学习笔记 进阶学习文末加群 本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中 所涉及到的方方面面的知识点精华内容 如下所示 希望对大家快速总结和复习有所帮助 Appium 自动化测试从基础到框架实
  • python网络安全论文题目_计算机科学与技术专业毕业论文参考题目.doc

    感谢你的欣赏 计算机科学与技术专业 毕业论文参考题目 一 论文参考题目 基于定位和在线绘图的签到考勤系统的设计与实现 基于 ASP NET 技术的校园网络自助报修系统的设计与实现 基于 HTML5 的互动抽取系统的设计与实现 基于 Web
  • React的State Hook用法详解

    一 State Hook是啥 State Hook 就是指 useState 这个特殊函数 让你不用编写class 就可以使用state特性 换言之就是让 函数组件 拥有 state 特性 对数据进行动态更新 二 class中的state
  • RHCE(chrony服务器)

    chrony服务器 chrony服务器是一个开源自由的网络时间协议NTP的客户端和服务器的软件 他能让计算机保持系统时钟和时钟服务器保持同步 让计算机保持精确的时间 chrony也可以作为服务端软件为其他计算机提供时间同步服务 chrony
  • 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

    例 输入为18时 输出为3 4 5 6 5 6 7 include
  • Tomcat 配置 闪退 catalina.bat start

    过年的时候配置好的Tomcat 今天一用竟然启动不了 我晕 java home catalina base catalina home 全部是原来的配置 没有修改过 为什么不能用了那 遇到的问题如下 1 启动Tomcat在cmd中输入 ca
  • SpringBoot整合Mybatis注解实战(一)-- 插入数据

    1 数据库数据表的创建 1 首先 在本地数据库中创建一个新数据库 再此命名为test mybatis 1 创建一个数据表user 创建脚本如下 user表创建脚本 CREATE TABLE user id int 11 unsigned N