JdbcTemplate连接数据库报错

本文档描述了在使用Spring的JdbcTemplate时遇到的数据库连接问题。原来配置的DruidDataSource无法连接到MySQL8数据库,原因是驱动版本不匹配。作者更新了URL,设置了正确的驱动类名,并下载了兼容MySQL8的驱动包。经过这些修改,测试方法能够成功运行,数据成功添加到数据库中。
摘要由CSDN通过智能技术生成

工作的任务是,向数据库中user_db这个数据库中添加一条book记录,使用Spring中的JdbcTemplate。

 BookDaoImpl.java中

@Repository
public class BookDaoImpl implements BookDao{

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    //添加的方法
    @Override
    public void add(Book book) {
        //1.创建sql语句
        String sql = "insert into t_book values(?,?,?)";
        //2.调用方法实现
        Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
}

测试类TestBook中:

    @Test
    public void testJdbcTemplate(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book = new Book("1","java","a");
        bookService.addBook(book);

    }
}

运行测试方法时报错了,连接不到数据库,原因在bean1.xml配置文件中。

原本给的连接池代码为:

<!-- 数据库连接池 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		destroy-method="close">
		<property name="url" value="jdbc:mysql:///user_db" />
		<property name="username" value="root" />
		<property name="password" value="root" />
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
	</bean>

后来发现发现是因为版本和视频中的不一致。我用的Mysql 8,所以驱动也应该用对应的。

做了四处的改动:

//1、url的value值改为了:
”jdbc:mysql://localhost:3306/user_db?serverTimezone=UTC“
//2、密码应该使用自己设置的密码
//3、driverClassName的值应该改为:
 value="com.mysql.cj.jdbc.Driver"

最后再下载一下mysql-connector-java-8.jar包。

具体下载过程为:

首先,打开官网:https://www.mysql.com/

然后,点击download,点击community

再点击,connector/J

 接着下拉菜单选中platform independent,点击第二个下载

下载完包以后,导入到项目中。

改进完毕以后再运行单元测试方法,就添加成功了

 数据库中也有了对应的元素

 

 

JdbcTemplateSpring Framework中的一个核心类,它可以通过简化JDBC的使用来简化数据库访问。使用JdbcTemplate连接数据库需要以下步骤: 1. 在Spring配置文件中配置数据源,例如使用org.apache.commons.dbcp.BasicDataSource。 2. 在Spring配置文件中配置JdbcTemplate Bean,将数据源注入到JdbcTemplate中。 3. 在Java代码中使用JdbcTemplate对象进行数据库操作,例如查询、插入、更新和删除。 以下是一个使用JdbcTemplate连接数据库的示例代码: ``` @Autowired private JdbcTemplate jdbcTemplate; public void queryData() { String sql = "SELECT * FROM users"; List<Map<String, Object>> userList = jdbcTemplate.queryForList(sql); for (Map<String, Object> user : userList) { System.out.println(user.get("name")); } } public void insertData(String name, int age) { String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; jdbcTemplate.update(sql, name, age); } public void updateData(int id, String name) { String sql = "UPDATE users SET name = ? WHERE id = ?"; jdbcTemplate.update(sql, name, id); } public void deleteData(int id) { String sql = "DELETE FROM users WHERE id = ?"; jdbcTemplate.update(sql, id); } ``` 在这个示例中,我们使用@Autowired注解将JdbcTemplate对象注入到Java类中,并使用queryForList、update方法进行数据库操作。当我们查询数据时,我们使用queryForList方法将查询结果转换成一个List<Map<String, Object>>类型的对象,其中每一个Map对象代表一行查询结果。当我们插入、更新和删除数据时,我们使用update方法进行相应的操作。在update方法中,我们使用?号作为占位符,每一个?号对应一个参数,参数的值在方法的后面依次传入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值