Spring Boot实战之数据库操作的示例代码

下面我为大家详细讲解一下“Spring Boot实战之数据库操作的示例代码”的完整攻略。

1. 环境准备

在开始实战前,先确保电脑中已经安装好了Java和Spring Boot。另外,如果需要连接数据库,还需要安装相应的数据库驱动程序,例如MySQL的驱动程序。

2. 创建Maven项目

使用Maven创建一个Spring Boot项目,添加依赖项,以便在代码中使用Spring Boot的相关功能。

3. 配置数据库

在配置文件(application.properties或application.yml)中添加数据库的相关配置信息,例如连接地址、用户名和密码等。

4. 创建实体类

根据需要在代码中定义实体类,用于映射数据库中的表结构。

5. 创建DAO

在代码中创建DAO(Data Access Object)层,用于实现数据的增、删、改、查等操作。可以使用Spring的JdbcTemplate等模板或者Hibernate等ORM框架。

以下是一个使用JdbcTemplate模板进行数据库操作的示例:

@Repository
public class UserDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void addUser(User user) {
        String sql = "INSERT INTO user(name, age) VALUES(?,?)";
        jdbcTemplate.update(sql, new Object[] { user.getName(), user.getAge() });
    }

    public void updateUser(User user) {
        String sql = "UPDATE user SET name=?, age=? WHERE id=?";
        jdbcTemplate.update(sql, new Object[] { user.getName(), user.getAge(), user.getId() });
    }

    public void deleteUser(Long id) {
        String sql = "DELETE FROM user WHERE id=?";
        jdbcTemplate.update(sql, new Object[] { id });
    }

    public User getUserById(Long id) {
        String sql = "SELECT * FROM user WHERE id=?";
        RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
        return jdbcTemplate.queryForObject(sql, new Object[] { id }, rowMapper);
    }

    public List<User> getUsers() {
        String sql = "SELECT * FROM user";
        RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
        return jdbcTemplate.query(sql, rowMapper);
    }

}

6. 创建控制器

在代码中创建控制器(Controller)层,用于接收和响应前端页面的请求。

以下是一个实现用户增删改查的示例控制器:

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserDao userDao;

    @PostMapping("")
    public String addUser(@RequestBody User user) {
        userDao.addUser(user);
        return "addUser success";
    }

    @PutMapping("")
    public String updateUser(@RequestBody User user) {
        userDao.updateUser(user);
        return "updateUser success";
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userDao.deleteUser(id);
        return "deleteUser success";
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userDao.getUserById(id);
    }

    @GetMapping("")
    public List<User> getUsers() {
        return userDao.getUsers();
    }

}

7. 运行测试

启动Spring Boot应用程序并测试,检查是否成功实现了数据库操作功能。

示例1

我们将创建一个简单的图书管理系统,包含图书的增删改查等功能。首先,需要在代码中创建一个Book实体类,用于映射数据库表结构,代码如下:

@Entity
@Table(name = "book")
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String author;

    public Book() {}

    public Book(String name, String author) {
        this.name = name;
        this.author = author;
    }

    // getter和setter方法省略
}

然后,在代码中创建一个BookDao类,用于实现图书的增删改查等操作,代码如下:

@Repository
public class BookDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void addBook(Book book) {
        String sql = "INSERT INTO book(name, author) VALUES(?,?)";
        jdbcTemplate.update(sql, new Object[] { book.getName(), book.getAuthor() });
    }

    public void updateBook(Book book) {
        String sql = "UPDATE book SET name=?, author=? WHERE id=?";
        jdbcTemplate.update(sql, new Object[] { book.getName(), book.getAuthor(), book.getId() });
    }

    public void deleteBook(Long id) {
        String sql = "DELETE FROM book WHERE id=?";
        jdbcTemplate.update(sql, new Object[] { id });
    }

    public Book getBookById(Long id) {
        String sql = "SELECT * FROM book WHERE id=?";
        RowMapper<Book> rowMapper = new BeanPropertyRowMapper<>(Book.class);
        return jdbcTemplate.queryForObject(sql, new Object[] { id }, rowMapper);
    }

    public List<Book> getBooks() {
        String sql = "SELECT * FROM book";
        RowMapper<Book> rowMapper = new BeanPropertyRowMapper<>(Book.class);
        return jdbcTemplate.query(sql, rowMapper);
    }

}

最后,在代码中创建一个BookController类,用于接收和响应前端页面的请求,代码如下:

@RestController
@RequestMapping("/books")
public class BookController {

    @Autowired
    private BookDao bookDao;

    @PostMapping("")
    public String addBook(@RequestBody Book book) {
        bookDao.addBook(book);
        return "addBook success";
    }

    @PutMapping("")
    public String updateBook(@RequestBody Book book) {
        bookDao.updateBook(book);
        return "updateBook success";
    }

    @DeleteMapping("/{id}")
    public String deleteBook(@PathVariable Long id) {
        bookDao.deleteBook(id);
        return "deleteBook success";
    }

    @GetMapping("/{id}")
    public Book getBookById(@PathVariable Long id) {
        return bookDao.getBookById(id);
    }

    @GetMapping("")
    public List<Book> getBooks() {
        return bookDao.getBooks();
    }

}

示例2

我们将创建一个在线商城系统,包含商品的增删改查等功能。与示例1相同,首先需要创建一个Product实体类,代码如下:

@Entity
@Table(name = "product")
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String description;

    private double price;

    public Product() {}

    public Product(String name, String description, double price) {
        this.name = name;
        this.description = description;
        this.price = price;
    }

    // getter和setter方法省略
}

在代码中创建一个ProductDao类,用于实现商品的增删改查等操作,代码如下:

@Repository
public class ProductDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void addProduct(Product product) {
        String sql = "INSERT INTO product(name, description, price) VALUES(?,?,?)";
        jdbcTemplate.update(sql, new Object[] { product.getName(), product.getDescription(), product.getPrice() });
    }

    public void updateProduct(Product product) {
        String sql = "UPDATE product SET name=?, description=?, price=? WHERE id=?";
        jdbcTemplate.update(sql, new Object[] { product.getName(), product.getDescription(), product.getPrice(), product.getId() });
    }

    public void deleteProduct(Long id) {
        String sql = "DELETE FROM product WHERE id=?";
        jdbcTemplate.update(sql, new Object[] { id });
    }

    public Product getProductById(Long id) {
        String sql = "SELECT * FROM product WHERE id=?";
        RowMapper<Product> rowMapper = new BeanPropertyRowMapper<>(Product.class);
        return jdbcTemplate.queryForObject(sql, new Object[] { id }, rowMapper);
    }

    public List<Product> getProducts() {
        String sql = "SELECT * FROM product";
        RowMapper<Product> rowMapper = new BeanPropertyRowMapper<>(Product.class);
        return jdbcTemplate.query(sql, rowMapper);
    }

}

最后,在代码中创建一个ProductController类,用于接收和响应前端页面的请求,代码如下:

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductDao productDao;

    @PostMapping("")
    public String addProduct(@RequestBody Product product) {
        productDao.addProduct(product);
        return "addProduct success";
    }

    @PutMapping("")
    public String updateProduct(@RequestBody Product product) {
        productDao.updateProduct(product);
        return "updateProduct success";
    }

    @DeleteMapping("/{id}")
    public String deleteProduct(@PathVariable Long id) {
        productDao.deleteProduct(id);
        return "deleteProduct success";
    }

    @GetMapping("/{id}")
    public Product getProductById(@PathVariable Long id) {
        return productDao.getProductById(id);
    }

    @GetMapping("")
    public List<Product> getProducts() {
        return productDao.getProducts();
    }

}

这样,我们就完成了两个基于Spring Boot的数据库操作示例,分别用于图书管理和在线商城系统。这些示例代码可以在实际项目中进行进一步的修改和拓展,具有一定的参考价值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot实战之数据库操作的示例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • jsp中page指令用法详解

    下面是 “jsp中page指令用法详解”的完整攻略。 什么是Page指令? Page指令是JSP页面的一个必需元素。它告诉JSP引擎关于JSP页面的特定信息。Page指令以<%@ page %>的格式来表示。 Page指令的属性 Page指令有以下属性: language:指定JSP页面所使用的脚本语言。默认为Java。例如:language=”…

    Java 2023年6月15日
    00
  • Java C++题解leetcode字符串轮转KMP算法详解

    Java C++题解leetcode字符串轮转KMP算法详解 1. 题目描述 给定两个字符串s1和s2,判断s2是否可以通过将s1中的某个子串移动后得到。 2. 思路分析 2.1 暴力枚举 我们可以将s1分为两段,任选一段放到另一段的前面,再判断是否与s2相等,如此循环往复。但是这样的时间复杂度为$O(n^2)$。 2.2 KMP算法 我们可以利用KMP算法…

    Java 2023年5月19日
    00
  • java开发AOP面向切面编程入门

    Java AOP面向切面编程入门攻略 什么是AOP编程 AOP(AspectOriented Programming),即面向切面编程,是OOP编程模式的一种补充。AOP编程是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 在传统的OOP编程中,我们将所有重复出现的代码封装到相应的模块或类中,实现代码复用。通过继承或组合等方式,可以将这些…

    Java 2023年5月19日
    00
  • SpringBoot整合MyBatis逆向工程及 MyBatis通用Mapper实例详解

    介绍 本文从零开始讲解SpringBoot整合MyBatis逆向工程及MyBatis通用Mapper的详细步骤和示例代码。MyBatis是一款优秀的ORM框架,通过逆向工程可以将关系型数据库的表结构生成对应的Java Bean,以及相关的Mapper和XML映射文件,以减少开发量。而MyBatis通用Mapper可以进一步提高开发效率,省去了大量的Mappe…

    Java 2023年5月20日
    00
  • java中Executor,ExecutorService,ThreadPoolExecutor详解

    Java中的Executor框架提供了一组API,可用于优雅地管理多线程、线程池和异步调用。主要由三个接口组成:Executor、ExecutorService和ThreadPoolExecutor。 Executor接口 Executor是一个简单的接口,它提供了一种方法将任务提交到线程中执行。 其定义如下: public interface Execut…

    Java 2023年5月19日
    00
  • JVM面试和学习中需要注意的部分

    在学习jvm的时候许多人处于迷茫的状态,对一些基础的知识反而听过就忘了,这篇笔记是我在学习jvm的时候随手记的一些,适合已经学过或者了解过的小伙伴复习回顾一下,当然知识的覆盖是没有的,主要记录了我觉得容易忘记或者记错的知识点,这些有很多是基石知识,希望大家不要忘记,大家看到就当正好复习一下,对大家的面试可能会有一点小小的帮助 内存结构 1.方法区用来存储类加…

    Java 2023年5月8日
    00
  • IDEA 如何导入别人的javaweb项目进行部署

    下面是在 IDEA 中导入别人的 JavaWeb 项目并进行部署的详细攻略: 步骤1:下载并安装 IDEA 如果您还没有安装 IDEA,可以到 IntelliJ IDEA 官网下载对应版本并安装。安装过程中请按照提示一步一步操作即可。 步骤2:下载并解压缩 JavaWeb 项目 假设您已经获得了别人的 JavaWeb 项目源代码,接下来需要将其解压缩到本地。…

    Java 2023年6月2日
    00
  • Java获取json数组对象的实例讲解

    获取JSON数组对象是Java中常见的操作,通常在与API交互、解析数据等场景中经常需要使用。下面是步骤: 步骤 引入相关依赖 首先需要引入相关的依赖,包括JSON解析库和HTTP库,通常使用的是Jackson库和HttpClient库。 <dependencies> <dependency> <groupId>com.f…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部