Spring Boot整和MyBatis!!!

目标:

  • 实现添加功能
  • 实现查询功能
  • 实现删除功能
  • 实现修改功能
  • 添加日期转换器

 1.搭建项目

        1.1pom文件:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.19</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies><build><!-- 如果不添加此节点src/main/java目录下的所有配置文件都会被漏掉。 --><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory></resource></resources></build>

        1.2链接数据库application.yml:

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3305/springbootusername: rootpassword:type: com.alibaba.druid.pool.DruidDataSource
logging:level:com:by:mapper: DEBUG

        1.3构建启动类:SpringbootMybatisApplication

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

2.添加功能实现:

        2.1add_user.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>添加用户</title>
</head>
<body>
<h3>新增用户</h3>
<hr/>
<form action="/user/addUser" method="post">姓名:<input type="text" name="name"/><br/>密码:<input type="text" name="pwd"/><br/>性别:<input type="radio" name="sex" value="1"/>女<input type="radio" name="sex" value="0"/>男<br/>生日:<input type="text" name="birth"/><br/><input type="submit" value="确定"/><br/>
</form>
</body>
</html>

        2.2对应实现controller,service,mapper层代码

                2.2.1controller层代码:

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.controller;import com.by.pojo.User;
import com.by.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** <p>Project: springboot - UserController</p>* <p>Powered by scl On 2024-01-15 16:25:51</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*/
@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/*** 添加** @param user* @return*/@RequestMapping("/addUser")public String addUser(User user) {userService.addUser(user);return "redirect:/user/selectUser";}}

                2.2.2实现service层代码:

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.service;import com.by.pojo.User;import java.util.List;public interface UserService{void addUser(User user);}

  实现类:

@Service
@Transactional
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic void addUser(User user) {userMapper.addUser(user);}
}

                2.2.3实现mapper层代码:

package com.by.mapper;import com.by.pojo.User;import java.util.List;/*** <p>Project: springboot - UserMapper</p>* <p>Powered by scl On 2024-01-15 14:51:39</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*/
public interface UserMapper {void addUser(User user);}

映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.by.mapper.UserMapper"><insert id="addUser" parameterType="com.by.pojo.User">insert into user(name,sex,pwd,birth) values(#{name},#{sex},#{pwd},#{birth})</insert></mapper>

3.查询功能实现

        3.1select_user.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>首页</title><link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/><style type="text/css">table {border-collapse: collapse; font-size: 14px; width: 80%; margin: auto}table, th, td {border: 1px solid darkslategray;padding: 10px}</style>
</head>
<body>
<div style="text-align: center"><span style="color: darkslategray; font-size: 30px">欢迎光临!</span><hr/><a href="/add_user">添加</a><table class="list"><tr><th>id</th><th>姓名</th><th>密码</th><th>性别</th><th>生日</th><th>操作</th></tr><tr th:each="user : ${userList}"><td th:text="${user.id}"></td><td th:text="${user.name}"></td><td th:text="${user.pwd}"></td><td th:text="${user.sex==1}?'女':'男'"></td><td th:text="${#dates.format(user.birth,'yyyy-MM-dd')}"></td><td><a th:href="@{/user/deleterUserById/{id}(id=${user.id})}">删除</a><a th:href="@{/user/getUserById/{id}(id=${user.id})}">修改</a></td></tr></table>
</div>
</body>
</html>

        3.2实现对应的controller、service、mapper层代码

                3.2.1controller层代码

/*** 查询所有用户信息** @param model* @return*/@RequestMapping("/selectUser")public String selectUser(Model model) {List<User> userList = userService.selectUser();model.addAttribute("userList", userList);return "select_user";}

                3.2.2service层代码

 List<User> selectUser();
 @Overridepublic List<User> selectUser() {return userMapper.selectUser();}

                3.2.3mapper层代码

List<User> selectUser();
    <select id="selectUser" resultType="com.by.pojo.User">select *from user;</select>

 

4.删除功能实现

          4.1实现对应的controller、service、mapper层代码

            4.1.1controller层代码

/*** 根据id删除用户** @param id* @return*/@GetMapping("/deleterUserById/{id}")public String deleterUserById(@PathVariable Integer id) {userService.deleterUserById(id);return "redirect:/user/selectUser";}

            4.1.2service层代码

    void deleterUserById(Integer id);
 @Overridepublic void deleterUserById(Integer id) {userMapper.deleterUserById(id);}

            4.1.3mapper层代码

void deleterUserById(Integer id);
 <delete id="deleterUserById" parameterType="java.lang.Integer">delete from user where id =#{id}</delete>

5.修改功能实现

          5.1update_user.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>添加用户</title>
</head>
<body>
<h3>新增用户</h3>
<hr/>
<form action="/user/updateUserById" method="post"><input type="hidden" name="id" th:value="${user.id}">姓名:<input type="text" name="name" th:value="${user.name}"/><br/>密码:<input type="text" name="pwd" th:value="${user.pwd}"/><br/>性别:<input type="radio" name="sex" value="1" th:checked="${user.sex==1}?'true':'false'"/>女<input type="radio" name="sex" value="0" th:checked="${user.sex==0}?'true':'false'"/>男<br/>生日:<input type="text" name="birth" th:value="${#dates.format(user.birth,'yyyy-MM-dd')}"/><br/><input type="submit" value="确定"/><br/>
</form>
</body>
</html>

          5.2实现对应的controller、service、mapper层代码

                    5.2.1controller层代码

 /*** 数据回显** @param id* @return*/@GetMapping("/getUserById/{id}")public String getUserById(@PathVariable Integer id, Model model) {User user = userService.getUserById(id);model.addAttribute("user", user);return "update_user";}/*** 修改** @param* @return*/@PostMapping("/updateUserById")public String updateUserById(User user) {userService.updateUserById(user);return "redirect:/user/selectUser";}

                    5.2.2service层代码

User getUserById(Integer id);void updateUserById(User user);
 @Overridepublic User getUserById(Integer id) {return userMapper.getUserById(id);}@Overridepublic void updateUserById(User user) {userMapper.updateUserById(user);}

                    5.2.3mapper层代码

 User getUserById(Integer id);void updateUserById(User user
 <select id="getUserById" resultType="com.by.pojo.User"  parameterType="java.lang.Integer">select * from user where id=#{id}</select><update id="updateUserById" parameterType="com.by.pojo.User">update user<set><if test="name!=null and name!=''">name=#{name},</if><if test="sex!=null">sex=#{sex},</if><if test="pwd!=null and pwd!=''">pwd=#{pwd},</if><if test="birth!=null">birth=#{birth},</if></set>where id =#{id}</update>

 6.添加日期转换器

DateConverter:(日期转换器)

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.converter;import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** <p>Project: springboot - DateConverter</p>* <p>Powered by scl On 2024-01-15 17:09:15</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*//*** 日期转换器*/
@Component
public class DateConverter implements Converter<String, Date> {@Overridepublic Date convert(String source) {try {DateFormat format = new SimpleDateFormat("yyyy-MM-dd");return format.parse(source);} catch (Exception e) {e.printStackTrace();}return null;}
}

WebmvcConfig:(将日期转换器装到容器中)

/** Copyright (c) 2020, 2024,  All rights reserved.**/
package com.by.config;import com.by.converter.DateConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.FormatterRegistry;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** <p>Project: springboot - WebmvcConfig</p>* <p>Powered by scl On 2024-01-15 17:17:46</p>* <p>描述:<p>** @author 孙臣龙 [1846080280@qq.com]* @version 1.0* @since 17*//*** 将日期转换器注入到容器中*/
@Component
public class WebmvcConfig implements WebMvcConfigurer {@Autowiredprivate DateConverter dateConverter;@Overridepublic void addFormatters(FormatterRegistry registry) {registry.addConverter(dateConverter);}
}

 

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

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

相关文章

windows编译TensorFlowServing

概述 整个编译打包过程的总体思路&#xff0c;是参照在linux下的编译流程&#xff0c;配置环境&#xff0c;执行编译命令&#xff0c;根据编译器/链接器反馈的错误&#xff0c;修改相应的源码或者相关库文件的存放路径&#xff0c;编译出windows平台下静态库和二进制执行文件。…

BuildRoot配置RTL8822CE WIFIBT模块(WIFI部分)

TinkerBoard2主板自带的无线模块为RTL8822CE&#xff0c;PCIe接口 之前在风火轮下载的Linux源码编译出来的BuildRoot根文件系统没有相关的驱动文件 [rootrk3399:/]# find . -name *.ko [rootrk3399:/]# lsmod Module Size Used by Not tainted [rootrk33…

Dicom Tag: Image Position,Image Orientation和Patient Position

文章目录 Image Position&#xff0c;Image Orientation和Patient PositionImage Position (0020,0032):Image Orientation (0020,0037):Patient Position(0018,5100)&#xff1a; Image Position&#xff0c;Image Orientation和Patient Position 在DICOM图像中&#xff0c;I…

栈(顺序存储、链式存储)

栈的定义 栈&#xff08;Stack&#xff09;是只允许在一端进行插入或删除操作的线性表 栈的操作特性是后进先出LIFO&#xff08;Last In First Out&#xff09; 顺序存储 链式存储

三款非常实用的图片转换格式工具

BMP是一种常见的位图图像格式&#xff0c;而JPG则是互联网上广泛使用的图像格式。有时&#xff0c;为了满足特定的需求或更好的兼容性&#xff0c;我们需要将BMP格式转换为JPG格式。今天&#xff0c;我们将为您推荐三款实用的软件&#xff0c;帮助您轻松完成这一转换。 水印云…

C# typeof 与 示例的GetType()

创建两个类 namespace ConsoleApp1;public interface IBagItem {public uint UId { get; set; } }public class BagItem : IBagItem {public uint UId { get; set; } }public class DreamIslandBagItem : IBagItem {public uint UId { get; set; } } 测试 namespace Consol…

QT 原生布局和QML的区别

一、QML 与 Qt Quick的区别 1.1 从概念上区分 为了更精确地对两者进行说明&#xff0c;先看助手对 QML 的描述&#xff1a; QML is a user interface specification and programming language. QML 是一种用户界面规范和标记语言&#xff0c;允许开发人员和设计师创建高性能、流…

端智能在大众点评搜索重排序的应用实践

1 引言 随着大数据、人工智能等信息技术的快速发展&#xff0c;云计算已经无法满足特定场景对数据隐私、高实时性的要求。借鉴边缘计算的思想&#xff0c;在终端部署 AI 能力逐渐步入大众的视野&#xff0c;“端智能”的概念应运而生。相比于传统的云计算&#xff0c;在智能手…

【Maven】008-Maven 私服搭建与使用

【Maven】008-Maven 私服搭建与使用 文章目录 【Maven】008-Maven 私服搭建与使用一、概述1、简介2、建立私服后依赖查找和下载逻辑第一步&#xff1a;请求本地仓库第二步&#xff1a;请求 Maven 私服第三步&#xff1a;请求外部远程仓库&#xff08;远程中央仓库等&#xff09…

常用的git diff命令用法汇总和示例

文章目录 1. 查看工作目录和暂存区的差异2. 查看暂存区和最后一次提交的差异3. 查看两个提交之间的差异4. 查看特定文件的更改5. 查看特定文件在两个提交之间的差异6. 查看分支之间的差异7. 查看某次提交的更改8. 限制diff输出的格式9. 查看一定时间范围内的更改 Git的diff命令…

动态路由协议

一、动态路由协议 动态路由协议&#xff0c;用在多个 Router 之间定期的、自动的、互相交换 Routes&#xff08;路由信息&#xff0c;包含了网段信息、可达性信息、路径信息等&#xff09;&#xff0c;动态生成 Routing Table Entries&#xff0c;并最终达到全网的路由收敛&am…

智慧校园大数据平台概述

背景 2015年是中国的智慧校园大数据元年,政府、企业、学校、研究者、管理者、教师、社会公众等都开始关注智慧校园大数据,相关政策文件、研究机构、学术活动、市场产品等开始纷纷出现。然而,我国的智慧校园大数据研究与实践领域整体还处于起步探索阶段,是在“摸着石头过河…

近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;C从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于C的优质内容&#xff01;&#x1f3c6;&#x1f3c6; C核心编程&#x1f30f;1 内存分区模型&#x1f384…

力扣hot100 颜色分类 双指针 滚动赋值

Problem: 75. 颜色分类 文章目录 思路解题方法复杂度Code&#x1f496; 超简洁版 思路 解题方法 描述你的解题方法 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution { public void sortColors(int[] nums){int n nums.length…

Relation-Aware Graph Transformer for SQL-to-Text Generation

Relation-Aware Graph Transformer for SQL-to-Text Generation Abstract SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图&#xff0c;并利用 graph-to-sequence 模型来生成问题&#xff0c;其中每个节点只能与 k 跳节点通信。由…

项目沟通管理和干系人管理

沟通管理3项&#xff1a;规划沟通管理&#xff0c;管理沟通&#xff0c;控制沟通 沟通渠道&#xff1a;Mn*&#xff08;n-1&#xff09;/2&#xff0c;n是人数大于等于1 沟通噪音&#xff1a;外部&#xff0c;内部&#xff0c;语义噪音 沟通方式3类&#xff1a;参与讨论方式&…

Qt超简单实现贪吃蛇

文章目录 常量Snake类GameController类GUI显示游戏简图 为了能够最简单地完成程序&#xff0c;所以没有用类的继承等知识。感兴趣的朋友可以改写一下。 常量 const int FILE_SIZE 30; //地图方格大小 const int FPS 5000 / 33; //游戏运行帧率 enum Item{empty, wall, food…

Netty通信中的粘包半包问题(三)

之前我们介绍了用特殊分隔符来分割每个报文&#xff0c;但是如果传输的数据中恰好有个特殊分隔符&#xff0c;它将会被拆分成多个&#xff0c;于是&#xff0c;为了进一步避免这个问题&#xff0c;还有一种解决方案是在两端的channelPipeline中用一个固定长度来区分&#xff0c…

K8s(一)Pod资源——Pod介绍、创建Pod、Pod简单资源配额

目录 Pod概述 pod网络 pod存储 pod和容器对比 创建pod的方式 pod运行方式分类 Pod的创建 Pod的创建过程 通过kubectl run来创建pod 通过yaml文件创建&#xff0c;yaml文件简单写法 Pod简单操作 Pod的标签labels Pod的资源配额resource 测试 Pod概述 Kubernetes …

贪心算法-活动安排-最详细注释解析

贪心算法-活动安排-最详细注释解析 题目&#xff1a; 学校在最近几天有n个活动&#xff0c;这些活动都需要使用学校的大礼堂&#xff0c;在同一时间&#xff0c;礼堂只能被一个活动使用。由于有些活动时间上有冲突&#xff0c;学校办公室人员只好让一些活动放弃使用礼堂而使用…