java mysql curd_如何使用 Spring 对数据库进行 CURD?

f33c611dd697f45a7cb402625e113f8c.png

作者 | 阿文,责编 | 郭芮

头图 | CSDN 下载自视觉中国

作为一名程序员,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配置文件:

在上述xml 文件中的beans 中定义了两个bean,分别是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.springframeworkspring-jdbc4.3.6.RELEASEmysqlmysql-connector-java8.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语句。

@TestpublicvoidTestJdbcTemplate(){//加载配置 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 namesYou can turn off this feature toget a quicker startup with -ADatabase changedMariaDB [spring_db]> show tables;+---------------------+| Tables_in_spring_db |+---------------------+| user_table |+---------------------+1 row inset (0.000 sec)MariaDB [spring_db]>

下面,我们通过jdbc 来实现增删改查操作,首先,我们要创建一个类,名字为User,这个User 类中包含了用户的id、用户名和密码信息,并设置其set和get属性:

package com.ssm.jdbc;publicclassUser{private Integer id;private String username;private String password;public Integer getId(){return id; }publicvoidsetId(Integer id){this.id = id; }public String getUsername(){return username; }publicvoidsetUsername(String username){this.username = username; }public String getPassword(){return password; }publicvoidsetPassword(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;publicinterfaceUserDao{publicintaddUser(User user);publicintupdateUser(User user);publicintdeleteUser(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 classUserDaoImplimplementsUserDao{ 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=newObject[]{ user.getUsername(), user.getPassword() };intnum=this.jdbcTemplate.update(sql,obj);returnnum; }@Override public int updateUser(User user) {String sql="update user_table set username=?,password=? where id=?";Object[] params=newObject[]{ user.getUsername(), user.getPassword(), user.getId() };intnum=this.jdbcTemplate.update(sql,params);returnnum; }@Override public int deleteUser(int id) {String sql="delete from user_table where id=?";intnum=this.jdbcTemplate.update(sql,id);returnnum; }@Override public User findUserById(int id) {String sql="select * from user_table where id=?"; RowMapper rowMapper=new BeanPropertyRowMapper(User.class);returnthis.jdbcTemplate.queryForObject(sql,rowMapper,id); }@Override public List findAllUser() {String sql="select * from user_table"; RowMapper rowMapper=new BeanPropertyRowMapper(User.class);returnthis.jdbcTemplate.query(sql,rowMapper); }}

然后我们在jdbc.xml 中加入bean,加入UserDao:

好了,一切准备就绪,我们接来下通过测试类来测试下具体的增删改查。

首先来测试下添加用户方法,如图下所示:

@TestpublicvoidaddUserTest(){//加载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"); } }

更新用户:

@TestpublicvoidupdateUserTest(){//加载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"); } }

删除用户:

@TestpublicvoiddelUserTest(){//加载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查询和查询所有:

@TestpublicvoidfindUserTest(){//加载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);}@TestpublicvoidfindAllUserTest(){//加载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 操作数据库实现增删改查的方法。

d6b79ca80e71df1d5d5162b428496582.png

d9ee1f2104fdd901d07894f7cfed6e03.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。以下是一个简单的 Spring Boot 项目,使用 MyBatis 对 MySQL 数据库进行 CRUD 操作的代码和注释。 首先,需要在 pom.xml 文件中添加以下依赖: ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MySQL Connector/J --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8..23</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.</version> </dependency> </dependencies> ``` 接下来,创建一个实体类 User,用于映射数据库中的 user 表: ```java public class User { private Long id; private String name; private Integer age; // 省略 getter 和 setter 方法 } ``` 然后,创建一个 Mapper 接口 UserMapper,用于定义 CRUD 操作: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") void insert(User user); @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}") void update(User user); @Delete("DELETE FROM user WHERE id = #{id}") void delete(Long id); } ``` 注意,这里使用了 MyBatis 的注解方式来定义 SQL 语句。 接下来,创建一个 Service 类 UserService,用于调用 Mapper 接口中定义的方法: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public User findById(Long id) { return userMapper.findById(id); } public void insert(User user) { userMapper.insert(user); } public void update(User user) { userMapper.update(user); } public void delete(Long id) { userMapper.delete(id); } } ``` 最后,创建一个 Controller 类 UserController,用于处理 HTTP 请求: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User findById(@PathVariable Long id) { return userService.findById(id); } @PostMapping public void insert(@RequestBody User user) { userService.insert(user); } @PutMapping("/{id}") public void update(@PathVariable Long id, @RequestBody User user) { user.setId(id); userService.update(user); } @DeleteMapping("/{id}") public void delete(@PathVariable Long id) { userService.delete(id); } } ``` 这里使用Spring MVC 的注解方式来定义 HTTP 请求处理方法。 以上就是一个简单的 Spring Boot 项目,使用 MyBatis 对 MySQL 数据库进行 CRUD 操作的代码和注释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值