使用Spring Boot实现操作数据库的接口的过程
作者:ouyangsong_pass_fail 发布时间:2024-01-25 02:02:49
标签:Spring,Boot,数据库,接口
一、Spring Boot原理
用户从页面前端,也就是我们所说的 view 层进行查询访问,进入到 controller 层找到对应的接口,接 着 controller 进行对 service 层进行业务功能的调用,service 要进入 dao 层查询数据,dao 层调用 mapper.xml 文件生成 sql 语句到数据库中进行查询
二、实现过程
2.1、准备数据库user表插入四条数据
2.2、model下创建一个User类
与数据库的字段一一对应
@Getter @Setter
public class User {
private int id;
private String username;
private String password;
private int age;
}
2.3、dao下创建一个UserDao接口
@Repository注解修饰哪个类,则表明这个类具有对对象进行CRUD(增删改查)的功能
@Repository
public interface UserDao {
public User getUserById(@Param("id") int id);
public List<User> getUserByAge(@Param("age") int age);
public List<User> getUserByName(@Param("username") String username);
public int insertUser(@RequestBody User user);
}
通过UserMapping.xml配置文件实现UserDao接口
<?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.demo.dao.UserDao">
<select id="getUserById" resultType="User">
select * from `user` where id=#{id}
</select>
<select id="getUserByAge" resultType="User">
select * from `user` where age=#{age}
</select>
<select id="getUserByName" resultType="User">
select * from `user` where username like concat('%',#{username},'%')
</select>
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" order="AFTER" resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user (username, password, age)
values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})
</insert>
</mapper>
2.4、Service下创建一个UserService接口
public interface UserService {
public User queryUserById(int id);
public List<User> queryUserByAge(int age);
public List<User> queryUserByName(String username);
public int insertUser(User user);
}
再创建一个UserServiceImpl实现UserService
@Service
public class UserSeviceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User queryUserById(int id) {
return userDao.getUserById(id);
}
@Override
public List<User> queryUserByAge(int age) {
return userDao.getUserByAge(age);
}
@Override
public List<User> queryUserByName(String username) {
return userDao.getUserByName(username);
}
@Override
public int insertUser(User user) {
return userDao.insertUser(user);
}
}
2.5、controller下创建一个UserController
@GetMapping是代表该查询接口用的是get方式
@RequestMapping(value="/insert",method = RequestMethod.POST)代表该插入接口用post方式
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/userid")
public User getUserById(@RequestParam("id") int id){
return userService.queryUserById(id);
}
@GetMapping("/username")
public List<User> getUserByUsername(@RequestParam("username") String username){
return userService.queryUserByName(username);
}
@RequestMapping(value="/insert",method = RequestMethod.POST)
public User insertUser(@RequestBody User user){
int x = userService.insertUser(user);
return user;
}
}
2.6、application.yml文件连接数据库
server:
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/testingdev9?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
mybatis:
mapper-locations:
- classpath:mapper/*.xml
- classpath*:com/**/mapper/*.xml
type-aliases-package: com.example.demo.model
2.7、启动DemoApplication文件
出现Started DemoApplication代表启动成功了
2.8、使用postman调用接口
如下图根据id查询
如下图插入数据
可以看到数据库多了一条数据
来源:https://blog.csdn.net/qq_39537481/article/details/118884915


猜你喜欢
- 1、查找表结构,判断要加入的列是否已存在2、如果不存在,则执行添加 CREATE PROCEDURE `mysql_sp_add_
- 习惯于使用数据库之前都必须创建一个连接池,即使是单线程的应用,只要有多个方法中需用到数据库连接,建立一两个连接的也会考虑先池化他们。连接池的
- 表结构很简单CREATE TABLE `oplogs` (`id` int(10) unsigned NOT NULL AUTO_INCRE
- pycharm是一款很流行的编写Python程序的编程软件,这篇文章给大家介绍Pycharm使用教程。1、下载pycharmpycharm是
- 1. 引言当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等
- A朋友:你直接问。B朋友:你女朋友睡了后,偷偷拿电脑查。C朋友:咱们不吊死在一棵树上,不对劲就早点脱身。D朋友:我觉得A的不行,直接问容易打
- 一种小技巧,可以让python捕获信号量HUP 然后当使用 kill 发起HUP信号量的时候 捕获到进行处理,可以处理为重新读取配置文件并重
- 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个
- ASP从发布至今已经7年了,使用ASP技术已经相当成熟,自从微软推出了ASP.NET之后就逐渐停止了对ASP版本的更新。但是由于有很多人仍然
- 本文教程为大家分享了mysql installer community 8.0.12.0的安装,供大家参考一、下载mysql-install
- 工作需要开始学Perl,下载个Window版(5.16)的: 下载链接 http://www.activestate.com/activep
- 工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个
- PHP hebrev() 函数实例反向显示希伯来字符:<?php echo hebrev("á çù&
- virtualenv是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Pytho
- 什么是nodejs?node.js是基于Chrome javaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。(
- 1 Python自动绘图在这里我主要运用了pyautocad库进行AutoCAD的自动化操作,pyautocad是一款功能非常强大的Auto
- 一、了解FTP服务器FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,即数据端口和命令端口,也称之为控制端口。默认情况下,20是数据
- 本文实例为大家分享了SpringBoot整合Mybatis使用Druid数据库连接池的方法,具体内容如下在SpringBoot项目中,增加如
- SMTPSMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP
- 前言首先,我们开发的项目会有多个版本.其次,我们的项目版本会随着更新越来越多,我们不可能因出了新版本就不维护旧版本了.那么,我们就需要对版本