使用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
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 一,Socket编程(1)Socket方法介绍Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接“,而
- 本篇教程展示如何安装Pymongo库,编辑器使用的当然是pycharm。准备我们这里直接使用pycharm来安装Pymongo库,和pych
- python logging日志模块的详解日志级别日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR C
- 介绍当在图像上训练深度神经网络模型时,通过对由数据增强生成的更多图像进行训练,可以使模型更好地泛化。常用的增强包括水平和垂直翻转/移位、以一
- 1.需求:在后台添加一条数据的同时要把添加者记录到表中。2.models.pyclass Setting(models.Model): &
- 在Oracle 8i版本之前,使用internal用户来执行数据库的启动和关闭以及create database等操作;从8i版本以后,Or
- eval()函数常被称为评估函数,它的功能是去掉参数最外侧引号,变成python可执行的语句,并执行语句的函数。1 eval函数的简介和语法
- 使用tensorflow 训练模型时,我们可以使用 tensorflow自带的 Save模块 tf.train.Saver()来保存模型,使
- 前言本文主要给大家介绍了关于不同版本中Python matplotlib.pyplot.draw()界面绘制异常的相关内容,分享出来供大家参
- get_template()中使用子目录把所有的模板都存放在一个目录下可能会让事情变得难以掌控。 你可能会考虑把模板存放在你模板目录的子目录
- 曾经在使用pycharm的时候找到过这个设置,后来想用的时候怎么都找不到了,今天终于摸索出来,记录一下,防止再次忘记。debug界面中间可以
- Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。方法的格式
- 1、 isalnum() :判断字符串所有的字符都是字母或者数字。返回true和falseIn [1]: str1='jiangwe
- 网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方。 1、使用meta标签,这也是普
- 目录1、设定答题卡模板2、读取答题卡图像并对图像进行灰度化处理3、高斯模糊图像去噪点4、使用大津法二值分割图像5、使用开运算去噪点6、使用c
- 声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。通过傅里叶变换,可以将时间域的声音函数分解
- 原先的ctrl+alt+L容易和各种软件的快捷键冲突在setting——keymap——右边搜索栏搜索Reformat Code就会出现该设
- 小书学习的主要方向是TensorFlow和Pytorch,今天就来安装一下Pytorch。第一步:去官网看看Pytorch官网:(https
- 什么是迭代(iteration)呢?给定一个list或者tuple,通过for循环来遍历这个list或者tuple、这种遍历就是迭代(ite
- 方法一:登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句mysql> set names l