spring整合jdbc实现数据库增删改查(解决jdbcTemplate为null问题)

本文介绍了如何使用Spring的JdbcTemplate进行数据库操作,并着重解决了在整合过程中遇到的JdbcTemplate注入为null的问题。通过配置数据源、连接池,创建测试表,编写实现类和测试类,详细展示了从出现错误到成功运行的完整过程。解决方案包括正确引入框架支持,使用注解注入JdbcTemplate,以及添加必要的测试依赖。
摘要由CSDN通过智能技术生成
  1. JdbcTemplate操作数据库:
    Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。同时,为了支持对properties文件的支持,spring提供了类似于EL表达式的方式,把dataSource.properties的文件参数引入到参数配置之中,<context:property-placeholder location=“classpath:jdbc.properties” />。

  2. spring为DAO的编写带来的好处:<摘自:https://blog.csdn.net/syq521125>

    • 优化了异常类型体系:
      细化了数据访问异常,丰富了异常类型
      (都是 Unchecked Exception,这种异常不会变动,采用同一种异常,表示同一种现象,与使用的持久化技术无关)
    • 使用模板回调模式,开发者不再写模式化代码,简化编程:
      不变:资源的获取,资源的释放,异常转化(Spring提供了模板类对此负责)
      变化:SQL,变量,结果集的提取
  • 先将xml配置文件上传
<?xml version="1.0" encoding="UTF-8"?>
 <beans default-autowire="byName"
 default-lazy-init="true"
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:jdbc="http://www.springframework.org/schema/jdbc"
 xmlns:jee="http://www.springframework.org/schema/jee"
 xmlns:jpa="http://www.springframework.org/schema/data/jpa"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.
实现Java数据库增删改查操作,您可以参考以下步骤和代码: 1. 首先,您需要创建数据库和表。可以使用以下SQL语句创建一个名为testdb的数据库,并在其中创建一个名为user的表。 ```sql DROP DATABASE IF EXISTS `testdb`; CREATE DATABASE testdb; USE testdb; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户 ID', `user_name` varchar(255) DEFAULT NULL COMMENT '用户名', `status` varchar(255) DEFAULT NULL COMMENT '用户状态', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; ``` 2. 接下来,您需要配置数据源,以便您的Java应用程序可以连接到数据库。在配置文件中添加以下内容,将URL、用户名和密码替换为您的实际数据库连接信息。 ```properties spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=123456 ``` 3. 然后,您需要创建一个UserService接口,其中定义了用于新增、更新、删除、统计和查询用户数据的方法。 ```java public interface UserService { int addUser(User user); int updateUser(User user); int deleteUser(User user); int countUser(User user); List<User> getUserList(User user); User getUser(User user); void batchAddUser(List<Object[]> batchArgs); } ``` 4. 最后,您需要在实现层中编写具体的代码来实现UserService接口。根据您的需求,您可以使用JDBC、MyBatis或者其他ORM框架来操作数据库。以下是一个简单的示例,使用JDBC实现了UserService接口的方法。 ```java @Repository public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; @Override public int addUser(User user) { String sql = "INSERT INTO user (user_name, status) VALUES (?, ?)"; return jdbcTemplate.update(sql, user.getUserName(), user.getStatus()); } @Override public int updateUser(User user) { String sql = "UPDATE user SET user_name = ?, status = ? WHERE user_id = ?"; return jdbcTemplate.update(sql, user.getUserName(), user.getStatus(), user.getUserId()); } @Override public int deleteUser(User user) { String sql = "DELETE FROM user WHERE user_id = ?"; return jdbcTemplate.update(sql, user.getUserId()); } @Override public int countUser(User user) { String sql = "SELECT COUNT(*) FROM user"; return jdbcTemplate.queryForObject(sql, Integer.class); } @Override public List<User> getUserList(User user) { String sql = "SELECT * FROM user"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class)); } @Override public User getUser(User user) { String sql = "SELECT * FROM user WHERE user_id = ?"; return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), user.getUserId()); } @Override public void batchAddUser(List<Object[]> batchArgs) { String sql = "INSERT INTO user (user_name, status) VALUES (?, ?)"; jdbcTemplate.batchUpdate(sql, batchArgs); } } ``` 这样,您就可以在Java中实现数据库增删改查操作了。根据需要调用UserService接口中的不同方法来执行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [java连接数据库实现基本的增删改查](https://blog.csdn.net/fcx1234/article/details/131198956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值