如何使用 Spring 對數據庫進行 CURD?

如何使用 Spring 對數據庫進行 CURD?

作者 | 阿文,責編 | 郭芮

頭圖 | CSDN 下載自視覺中國

出品 | CSDN(ID:CSDNnews)

作為一名程序員,CURD(增刪改查)是一件必不可少的事情,甭管你是初級程序員還是高級程序員都會和數據庫打交道。那麼在Java中如何通過Spring 框架來對數據庫進行操作呢?本文將帶你一起來學習。

Spring框架針對數據庫提供了JdbcTemplate 類,JdbcTemplate 是Spring 數據抽象層的基礎,其他更高層次的抽象類都是構建在其基礎之上,JdbcTemplate 是Spring JDBC的核心類。JdbcTemplate 繼承自抽象類JdbcAccessor,同時實現了JdbcOperations 接口,JdbcTemplate定義在了JdbcTemplate類中從而可以使用增刪改查來對數據庫進行操作。JdbcTemplate 的直接父類是JdbcAccessor,它提供了一些訪問數據庫時所需要使用的公共屬性,包括DataSource以及SQLExceptionTranslator 等。前者用於獲取數據庫連接以及引入對數據庫連接的緩衝池以及分佈式事務等支出。後者是對SQLException 進行轉譯工作。

首先,我來說下本次文檔所需要準備的工具,具體如下:

  • idea 社區版

  • maven,idea 自帶的

  • mysql 或Mariadb

接下來,我們先簡單介紹下Spring JDBC 模塊,它主要包括core、dataSource、object、support四個包,分別提供的功能如下:

  • core 包括JDBC的核心功能,例如JdbcTemplate類、simpleJdbcInsert類、simpleJdbcCall 類以及
    NamedParameterJdbcTemplate類。

  • dataSource 包括了訪問數據庫的實用工具類。

  • object 以OOP的方式訪問數據庫,它允許執行查詢操作並將返回結果作為業務對象,可以在數據表和業務對象的屬性直接映射查詢關係。

  • support 包括core 和object包的支持類,例如提供一些SQLException類。

我們瞭解了這些模塊的功能,接來下我們看看怎麼去配置JDBC,下面是 JDBC的XML配置文件:


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

class="org.springframework.jdbc.datasource.DriverManagerDataSource">















在上述xml 文件中的<code>beans/<code>中定義了兩個<code>bean/<code>,分別是dataSource、jdbcTemplate。

其中dataSource的類是由
org.springframework.jdbc.datasource.DriverManagerDataSource 提供,包含了4個屬性分別對應的是:

  • driverClassName,它是數據庫的驅動,值是com.mysql.jdbc.Driver;

  • url 數據庫的訪問地址,如上所示,
    jdbc:mysql://localhost:3306/spring_db 中的localhost 為你的數據庫地址 3306 為數據庫的連接斷開,斜槓後面的spring_db 表示需要連接的數據庫名稱;

  • username 數據庫的用戶名;

  • password 數據庫的密碼;

下面我們通過實例的方式來講解如何通過JDBC來對數據庫進行操作,我們需要進行以下準備工作。

首先,我們需要配置maven的pom.xml 下載所需要的jar包,包括spring-jdbc、mysql-connector-java:

 
org.springframework
spring-jdbc
4.3.6.RELEASE



mysql
mysql-connector-java
8.0.19

第二步,需要有一個可以反問的數據庫,比如我的數據庫設置密碼為root

mysqladmin -u root password root

第三步.創建一個spring_db 的表,並且需要授權用戶遠程訪問,如果是本地這一步可以不用做

MariaDB [(none)]> create database spring_db;
Query OK, 1 row affected (0.000 sec)

第四步,在idea 工程中新建一個com.ssm.jdbc 的包,並在該包中創建一個JdbcTempTest的測試類,首先我們加載xml 配置,配置文件就是上面的xml配置文件,我們創建一個數據表為user_table,使用jdbctemp.execute(String s) 方法執行SQL語句。

 @Test
public void TestJdbcTemplate {
//加載配置
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
//獲取JdbcTemplate實例
JdbcTemplate jdbctemp = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
jdbctemp.execute("create table user_table(" +
"id int primary key auto_increment," +
"username varchar(80)," +
"password varchar(40))");
}

我們執行該測試類,然後進入數據庫,我們可以看到該表已經被創建出來了:

MariaDB [(none)]> use spring_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [spring_db]> show tables;
+---------------------+
| Tables_in_spring_db |
+---------------------+
| user_table |
+---------------------+
1 row in set (0.000 sec)

MariaDB [spring_db]>

下面,我們通過jdbc 來實現增刪改查操作,首先,我們要創建一個類,名字為User,這個User 類中包含了用戶的id、用戶名和密碼信息,並設置其set和get屬性:

package com.ssm.jdbc;

public class User {
private Integer id;
private String username;
private String password;

public Integer getId {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}

然後我們創建一個UserDao 接口,該接口定義了添加、更新、刪除、根據ID查詢和查詢所有用戶的方法:

package com.ssm.jdbc;

import java.util.List;

public interface UserDao {
public int addUser(User user);
public int updateUser(User user);
public int deleteUser(int id);
//通過id查詢用戶
public User findUserById(int id);
//查詢所有用戶
public List findAllUser;

}

接下來,我們來對UserDao的接口進行實現,在這個方法中我們對具體的增刪改查邏輯進行設置,直接看代碼吧:

package com.ssm.jdbc;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.util.List;

public class UserDaoImpl implements UserDao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public int addUser(User user) {
String sql="insert into user_table(username,password) value(?,?)";
Object obj=new Object{
user.getUsername,
user.getPassword
};
int num=this.jdbcTemplate.update(sql,obj);
return num;
}

@Override
public int updateUser(User user) {
String sql="update user_table set username=?,password=? where id=?";
Object params=new Object{
user.getUsername,
user.getPassword,
user.getId
};
int num=this.jdbcTemplate.update(sql,params);
return num;
}

@Override
public int deleteUser(int id) {
String sql="delete from user_table where id=?";
int num=this.jdbcTemplate.update(sql,id);
return num;
}

@Override
public User findUserById(int id) {
String sql="select * from user_table where id=?";
RowMapper rowMapper=new BeanPropertyRowMapper(User.class);
return this.jdbcTemplate.queryForObject(sql,rowMapper,id);
}


@Override
public List findAllUser {
String sql="select * from user_table";
RowMapper rowMapper=new BeanPropertyRowMapper(User.class);
return this.jdbcTemplate.query(sql,rowMapper);
}
}

然後我們在jdbc.xml 中加入bean,加入UserDao:

 




好了,一切準備就緒,我們接來下通過測試類來測試下具體的增刪改查。

首先來測試下添加用戶方法,如圖下所示:

 @Test
public void addUserTest{
//加載jdbc.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
//獲取UserDao實例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//創建user實例
User user = new User;
//設置屬性
user.setUsername("張三");
user.setPassword("123");
//添加用戶
int num = userDao.addUser(user);
if (num > 0) {
System.out.println("Success insert "+num+" data");
}else {
System.out.println("erro");
}
}

更新用戶:

 @Test
public void updateUserTest{
//加載jdbc.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
//獲取UserDao實例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//創建user實例
User user = new User;
//設置屬性
user.setId(1);
user.setUsername("李四");
user.setPassword("12345");
//更新用戶信息
int num = userDao.updateUser(user);
if (num > 0) {
System.out.println("Success update "+num+" data");
}else {
System.out.println("erro");
}
}

刪除用戶:

 @Test
public void delUserTest{
//加載jdbc.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
//獲取UserDao實例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//刪除,傳入ID值
int num = userDao.deleteUser(1);
if (num > 0) {
System.out.println("Success delete "+num+" data");
}else {
System.out.println("erro");
}
}

查詢用戶信息,包括了根據ID查詢和查詢所有:

@Test
public void findUserTest{
//加載jdbc.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
//獲取UserDao實例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//根據ID查詢用戶
User user = userDao.findUserById(2);
System.out.println(user);

}

@Test
public void findAllUserTest{
//加載jdbc.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
//獲取UserDao實例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//根據ID查詢用戶
List list = userDao.findAllUser;
for (User user:list){
System.out.println(user);
}

}

好了,以上就是關於如果使用Spring JDBC 操作數據庫實現增刪改查的方法。

如何使用 Spring 對數據庫進行 CURD?
如何使用 Spring 對數據庫進行 CURD?如何使用 Spring 對數據庫進行 CURD? 

☞AI 世界的硬核之戰,Tengine 憑什麼成為最受開發者歡迎的主流框架?

☞說了這麼多 5G,最關鍵的技術在這裡

☞360金融新任首席科學家:別指望AI Lab做成中臺

☞AI圖像智能修復老照片,效果驚豔到我了

☞程序員內功修煉系列:10 張圖解談 Linux 物理內存和虛擬內存

☞當 DeFi 遇上 Rollup,將擦出怎樣的火花?


分享到:


相關文章: