SpringBoot增删改查
程序员文章站
2022-04-22 13:38:34
...
SpringBoot增删改查
开发工具基于IDEA + Maven + Navicat for MySQL
环境配置
配置Maven
下载Maven后配置环境变量
MAVEN_HOME=upath
%JAVA_HOME%\bin
%MAVEN_HOME%\bin
创建Maven本地仓库,并在%MAVEN_HOME%\conf\setting.xml路径下修改<LocalRepository>
的路径为本地仓库路径
IDEA配置Maven
文件-设置-构建-构建工具-Maven
- Maven home directory :Maven路径
- User settings file :%MAVEN_HOME%\conf\setting.xml
- Local repository :本地仓库路径
项目制作
创建项目
- 创建Spring Initializr项目
- Dependecies选择
- Web选项勾选Web
- Template Engines选项勾选Thymeleaf
- SQL选项勾选MySQL+JDBC+Mybatis
创建数据库
使用Navicat for MySQL创建数据库springdemo
并使用该数据库创建persons
表
use springdemo;
create table persons(
id int(3) primary key not null auto_increment,
name varchar(50),
gender varchar(10),
age int(3)
);
创建JavaBean
完成数据库创建后,在我们的项目中创建对应的JavaBean对象
src-main-java-uProjectName在该目录下创建一个名为pojo的package
创建完成后在pojo包下创建一个名为Person的java类
public class Person {
private int id;
private String name;
private String gender;
private int age;
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
三层架构
mapper数据访问层
- 在properties文件中配置数据库驱动
spring.datasource.url=uUrl
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=uPwd
-
数据访问层实现 接口+配置
使用注释语句实现数据库数据操作
@Mapper
public interface PersonMapper {
@Select("select * from persons")
List<Person> getAllPersons();
@Select("select * from persons where id=#{id}")
Person getPersonByID(int id);
@Insert("insert into persons(name,gender,age) values(#{name},#{gender},#{age})")
int addPerson(Person person);
@Update("update persons set name=#{name},gender=#{gender},age=#{age} where id=#{id}")
int updatePerson(Person person);
@Delete("delete from persons where id=#{id}")
int deletePersonByID(int id);
}
service业务逻辑层
- Service接口
public interface PersonService {
List<Person> getAllPersons();
Person getPersonByID(int id);
int addPerson(Person person);
int updatePerson(Person person);
int deletePersonByID(int id);
}
-
Service接口实现类
Autowired注解使用控制反转,由Spring自动按类型注入bean对象
在Service层使用数据访问层mapper中的基本数据库操作组合实现业务逻辑操作。
@Service
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonMapper personMapper;
@Override
public List<Person> getAllPersons() {
return personMapper.getAllPersons();
}
@Override
public Person getPersonByID(int id) {
return personMapper.getPersonByID(id);
}
@Override
public int addPerson(Person person) {
return personMapper.addPerson(person);
}
@Override
public int updatePerson(Person person) {
return personMapper.updatePerson(person);
}
@Override
public int deletePersonByID(int id) {
return personMapper.deletePersonByID(id);
}
}
controller + 页面 表示层
- RequestMapping(“url”) 指定路径
- Map<String,Object> 键值对形式,对页面传参
- return “url” 返回template中的路径
- 页面代码中使用过
<html lang="en" xmlns:th="http://www.thymeleaf.org">
加载模板引擎
-
查找所有记录
controller方法实现
@RequestMapping("/list") public String getAllPersons(Map<String,Object> map){ List<Person> list=personService.getAllPersons(); map.put("persons", list); return "person/list"; }
页面实现
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>人员信息表</title> </head> <body> <a th:href="@{/add}">添加记录</a> <table border="1px"> <tr> <td colspan="6" align="center">人员信息表</td> </tr> <tr> <td>ID</td> <td>姓名</td> <td>性别</td> <td>年龄</td> </tr> <tr th:each="person:${persons}"> <td th:text="${person.id}">ID</td> <td th:text="${person.name}">姓名</td> <td th:text="${person.gender}">性别</td> <td th:text="${person.age}">年龄</td> </tr> </table> </body> </html>
-
添加记录
controller方法实现
@GetMapping("/add") public String addPerson(){ return "person/add"; } @PostMapping("/add") public String addPerson(Person person){ personService.addPerson(person); return "redirect:/list"; }
页面实现
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>添加记录</title> </head> <body> <form th:action="@{/add}" th:method="post"> <table border="1px"> <tr> <td colspan="2" align="center">添加记录</td> </tr> <tr> <td>姓名</td> <td> <input type="text" name="name"/> </td> </tr> <tr> <td>性别</td> <td> <select name="gender"> <option>请选择</option> <option value="男">男</option> <option value="女">女</option> </select> </td> </tr> <tr> <td>年龄</td> <td> <input type="text" name="age"/> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="添加"/> </td> </tr> </table> </form> </body> </html>
-
修改记录
controller方法实现
@GetMapping("/update/{id}") public String updatePerson(@PathVariable("id") int id,Map<String,Person> map){ Person person = personService.getPersonByID(id); map.put("person", person); return "person/update"; } @PostMapping("/update") public String updatePerson(Person person){ personService.updatePerson(person); return "redirect:/list"; }
页面实现
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>修改记录</title> </head> <body> <form th:action="@{/update}" th:method="post"> <input type="hidden" name="id" th:value="${person.id}"/> <table border="1px"> <tr> <td colspan="2" align="center">修改记录</td> </tr> <tr> <td>ID</td> <td th:text="${person.id}"></td> </tr> <tr> <td>姓名</td> <td> <input type="text" name="name" th:value="${person.name}"/> </td> </tr> <tr> <td>性别</td> <td> <select name="gender"> <option value="男" th:selected="${person.gender}=='男'">男</option> <option value="女" th:selected="${person.gender}=='女'">女</option> </select> </td> </tr> <tr> <td>年龄</td> <td> <input type="text" name="age" th:value="${person.age}"/> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="修改"/> </td> </tr> </table> </form> </body> </html>
-
删除记录
controller方法实现
@GetMapping("/delete/{id}") public String deletePerson(@PathVariable("id") int id){ personService.deletePersonByID(id); return "redirect:/list"; }
-
完整controller类代码
@Controller
public class PersonController {
@Autowired
private PersonService personService;
@RequestMapping("/list")
public String getAllPersons(Map<String,Object> map){
List<Person> list=personService.getAllPersons();
map.put("persons", list);
return "person/list";
}
@GetMapping("/add")
public String addPerson(){
return "person/add";
}
@PostMapping("/add")
public String addPerson(Person person){
personService.addPerson(person);
return "redirect:/list";
}
@GetMapping("/update/{id}")
public String updatePerson(@PathVariable("id") int id,Map<String,Person> map){
Person person = personService.getPersonByID(id);
map.put("person", person);
return "person/update";
}
@PostMapping("/update")
public String updatePerson(Person person){
personService.updatePerson(person);
return "redirect:/list";
}
@GetMapping("/delete/{id}")
public String deletePerson(@PathVariable("id") int id){
personService.deletePersonByID(id);
return "redirect:/list";
}
}
- 完整list页面代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>人员信息表</title>
</head>
<body>
<a th:href="@{/add}">添加记录</a>
<table border="1px">
<tr>
<td colspan="6" align="center">人员信息表</td>
</tr>
<tr>
<td>ID</td>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
<td>修改</td>
<td>删除</td>
</tr>
<tr th:each="person:${persons}">
<td th:text="${person.id}">ID</td>
<td th:text="${person.name}">姓名</td>
<td th:text="${person.gender}">性别</td>
<td th:text="${person.age}">年龄</td>
<td><a th:href="@{/update/}+${person.id}">修改</a></td>
<td><a th:href="@{/delete/}+${person.id}" onclick="return confirm('确定要删除该记录吗?')">删除</a></td>
</tr>
</table>
</body>
</html>
打包项目
- 项目右侧选择Maven Projects
- 选择Lifecycle-package
- 右键选择Run Maven Build
- 在项目的target包中便可以找到打包后项目的jar包
- 在命令行中运行
java -jar xxx.jar
便可以实现脱离开发环境运行
上一篇: Springboot中如何直接刷新网页来更新静态页面和资源的修改
下一篇: springboot基础
推荐阅读
-
SQL 增、删、改、查语句
-
abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之八(三十四)
-
JS实现数组的增删改查操作示例
-
spring-data-jpa实现增删改查以及分页操作方法
-
SpringBoot + Mybatis 增删改查实例教程详细解读
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八)
-
MySQL增删改查语句
-
python cx_Oracle的基础使用方法(连接和增删改查)
-
关于小程序云开发数据库的增删改查操作