本篇是用SpringBoot搭建一个增删改查的demo,编辑器是idea,适合初学者学习。源码在GitHub上,https://github.com/jiangttian/springboot/tree/master

项目的架构如下:

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.4.10</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>sample_crud</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></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-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

application.yml

#mybatis的相关配置
mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.demo.entity#开启驼峰命名configuration:map-underscore-to-camel-case: true

application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/jttdb
spring.datasource.username=postgres
spring.datasource.password=123456
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.hbm2ddl.auto=update
#热部署默认会重启
#spring.devtools.restart.enabled=true
#添加那个目录的文件需要restart
#spring.devtools.restart.additional-paths=src/main/java
#排除那个目录的文件不需要restart
#spring.devtools.restart.exclude=static/**,public/**
# thymeleaf配置,开发环境不启用缓存,正式环境下请启用缓存,提高性能
spring.thymeleaf.cache=false
# thymeleaf对html元素格式要求严格,设置它的mode为HTML,忘记结束标签后不会报错
spring.thymeleaf.mode=HTML
spring.mvc.hiddenmethod.filter.enabled=true

controller

package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;//使用thymeleaf返回值得是一个模板页面?处理del请求时返回void时,提示没有模板
@Controller
public class thymeController {@Autowiredprivate UserService userService;@RequestMapping("/getList")public String getList(ModelMap map) {map.addAttribute("users", userService.list());return "list";//从resources根目录下找页面}@RequestMapping("/edit")public String edit(ModelMap map, @RequestParam(defaultValue = "0") Integer id) {System.out.println("编辑用户id:" + id);//isAdd : 向前端页面返回一个是新增与编辑的标识if (id > 0) {//更新用户信息map.addAttribute("isAdd", false);map.addAttribute("user", userService.getById(id));} else {//增加用户信息map.addAttribute("isAdd", true);map.addAttribute("user", new User());}return "editPage";}@RequestMapping("/del/{id}")public String delete(@PathVariable Integer id) {System.out.println("删除用户" + id.toString());userService.deleteUser(id);return "redirect:/getList";}//新增和编辑@PostMapping("/save")public String save(User user) {System.out.println("temp save");System.out.println(user.toString());if (user == null) {return "failed: user is null";}if (user.getId() == null)userService.addUser(user);else userService.updateUser(user);return "redirect:/getList";}
}

User

package com.example.demo.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;import java.io.Serializable;@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User implements Serializable {private Integer id;//编号private String username;//用户名private String password;//密码
}

UserMapper

package com.example.demo.mapper;import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper//指定这是一个操作数据库的mapper
public interface UserMapper {List<User> list();User getById(Integer id);void addUser(User user);void updateUser(User user);int deleteUser(Integer id);
}

UserService

package com.example.demo.service;import com.example.demo.entity.User;import java.util.List;public interface UserService {//获取所有用户List<User> list();//根据id获取单个用户User getById(Integer id);//增加用户void addUser(User user);//更新用户信息void updateUser(User user);//根据id删除用户int deleteUser(Integer id);}
UserServiceimpl
package com.example.demo.service.impl;import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import com.example.demo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;//需要在接口实现类中使用@Service注解,才能被SpringBoot扫描
@Service("userService")
public class UserServiceimpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> list() {return userMapper.list();}@Overridepublic User getById(Integer id) {return userMapper.getById(id);}@Overridepublic void addUser(User user){userMapper.addUser(user);}@Overridepublic void updateUser(User user){userMapper.updateUser(user);}@Overridepublic int deleteUser(Integer id){return userMapper.deleteUser(id);}
}
SampleCrudApplication
package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SampleCrudApplication {public static void main(String[] args) {SpringApplication.run(SampleCrudApplication.class, args);}}

UserMapper

<?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.mapper.UserMapper"><select id="list" resultType="User">SELECT * FROM "User"</select><select id="getById" resultType="User">select id,username,password from "User" where id=#{id}</select><insert id="addUser" parameterType="User">INSERT INTO "User"(username,password) VALUES (#{username}, #{password,jdbcType=VARCHAR})</insert><update id="updateUser" parameterType="User">UPDATE "User" SETusername= #{username,jdbcType=VARCHAR},password = #{password,jdbcType=VARCHAR}where id= #{id,jdbcType=INTEGER}</update><delete id="deleteUser" parameterType="java.lang.Integer">DELETE  FROM "User" where id=#{id}</delete>
</mapper><!--1.namespace中需要与使用@Mapper的接口对应
2.UserMapper.xml文件名称必须与使用@Mapper的接口一致
3.标签中的id必须与@Mapper的接口中的方法名一致,且参数一致-->

User.sql建表语句

--pregreSQL 建表名字是User时,因其是关键字要加双引号,主键自增用serial
create table "User"(id serial primary key,username varchar(20),password varchar(20));
--建表后查看表的sql语句如下所示,使用serial会创建一个关联的sequece
--CREATE TABLE IF NOT EXISTS public."User"
--(
--    id integer NOT NULL DEFAULT nextval('User_id_seq'::regclass),
--    username character varying(20) COLLATE pg_catalog."default",
--    password character varying(20) COLLATE pg_catalog."default",
--    CONSTRAINT "User_pkey" PRIMARY KEY (id)
--)

list模板

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>用户列表</title><style>table{border-collapse:collapse;}table,th, td{border: 1px solid black;padding: 5px;text-align: center;}</style>
</head>
<body>
<br/>
<br/>
<a href="/edit">新增用户</a>
<br/>
<br/>
<table><thead><th width="25%">id</th><th width="25%">username</th><th width="25%">password</th><th width="25%">操作</th></thead><tbody><tr th:each="user : ${users}"><td th:text="${user.id}"></td><td th:text="${user.username}"></td><td th:text="${user.password}"></td><td><a th:href="@{/edit(id=${user.id})}">编辑</a> &nbsp;&nbsp;<a th:href="@{/del/{id}(id=${user.id})}">删除</a></td></tr></tbody>
</table>
</body>
</html>

editPage

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>新增、编辑客户</title>
</head>
<body>
<form th:action="@{/save}" method="post"><div th:if="${isAdd} == false"><label>id</label><input type="text" name="id" readonly="readonly" th:field="${user.id}" /></div><div><label>username</label><input type="text" name="username" th:field="${user.username}" /></div><div><label>password</label><input type="text" name="password" th:field="${user.password}" /></div><div><input type="submit" value="提交" /></div>
</form>
</body>
</html>

以上就是demo的主要内容了。列表的显示图如下:

SpringBoot+mybatis+postgreSQL+thymeleaf增删改查相关推荐

  1. SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 2021-06-04

    SpringBoot + MyBatis + MySQL +IDEA2021 增删改查 1.环境介绍 Windows 10 JDK 1.8 MySQL 8 IDEA 2021.1.2 2.开始操作.新 ...

  2. springboot+mybatis+mysql(增删改查xml入门编程)

    jdk1.8 idea 2017.2.6 springboot 2.x 项目搭建省略,直接上代码: 项目结构: application.properties配置 server.port=8086#加载 ...

  3. Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    <p>这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例.</p> 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭 ...

  4. neo4j图数据库安装(mac)+neo4j集成springboot实现基础的增删改查

    目录 第一部分 mac安装neo4j 第二部分 neo4j集成springboot实现基础的增删改查 一.图数据库相关配置 二.业务逻辑 实体类 持久层 业务层 表现层 启动类 三.测试 附录: 第一 ...

  5. Mybatis基础:增删改查、模糊查询、多条件查询

    Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...

  6. SpringBoot操作MongoDB实现增删改查

    本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...

  7. springboot对于redis的增删改查

    springboot对于redis的增删改查 1.下载redis,安装之后,打开redis服务器.不过有绿色版的,直接打开redis服务器可执行文件,启动redis服务器. 2.在pom.xml配置文 ...

  8. myBatis 简单的增删改查

    myBatis 简单的增删改查 前面已经讲到用接口的方式编程.这种方式,要注意的一个地方就是.在User.xml 的配置文件中, mapper namespace="com.fjh.inte ...

  9. SpringBoot集成thymeleaf增删改查示例

    有小伙伴找我要个 thymeleaf 的 demo,说自己集成的总是报错,所以就有了这篇- 关于什么是 thymeleaf 我就不赘述了,相信搜到这篇的大部分是奔着如何集成来的. 本文源码先附上:ht ...

最新文章

  1. 用聚类方法结合卷积网络,实现无监督端到端图像分类
  2. 数据仓库及其体系建设
  3. Location和Content-Location
  4. java利用poi读取excel_java利用POI 读取EXCEL
  5. shell编程之文本处理工具sed
  6. Mysql分页加pagebean_Spring+MyBatis+SpringMvc+Mysql+Druid+PageHelper分页实现
  7. 【安全测试】:某系统短信修改密码,绕过逻辑漏洞
  8. docker daemon 配置文件
  9. 记一次升级node版本后,运行原vue项目报错问题解决方法
  10. Linux正确查看内存占用
  11. Omnet 4.2.2 errorList
  12. 《元宇宙的未来猜想和投资机遇分析 》
  13. Hello Qt——QtCreator代码格式化
  14. pso粒子群优化算法+MATLAB代码
  15. 做自媒体4大免费网站,帮助我们更快上手运营
  16. ClientToScreen 和ScreenToClient
  17. 已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None
  18. From Nand to Tetris Week1 超详细2021
  19. AMCL代码详解(五)根据激光观测更新粒子权重
  20. 详文解读微信「看一看」多模型内容策略与召回

热门文章

  1. 人工智能合一算法java语言实现_人工智能合一算法UNify.doc
  2. 解决代理服务器出现问题,无法连接校园网
  3. python解析返回值类型为xml的数据接口
  4. “元气可乐”不是终点,“中国可乐”才是
  5. 屈光性白内障治疗手术案例
  6. 《通信技术导论(原书第5版)》——1.11 网络布线
  7. C语言:输出n行由大写字母A开始构成的三角形字符阵列。
  8. Linux笔记1 — 基本命令
  9. 802.1q协议 VLAN的三种接口特性(Access、Trunk、Hybrid)简要分析
  10. 智能安防不谢幕 探讨重点领域发展趋势