spring 学习(四): spring 的 jdbcTemplate 操作
spring 针对 javaee 的每一层,都提供了相应的解决技术,jdbcTemplate 的主要操作在 dao 层。
下面我们来使用 jdbcTemplate 对数据库进行 crud 操作。
准备工作1 我们首先来导入 jar 包,还是相似的使用 maven 来导入,修改配置文件,需要导入 jar 包的配置:
<!-- jdbcTemplate 使用的 jar 包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.2.4.RELEASE</version> </dependency> <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.12</version> </dependency>2 创建对象,设置数据库信息。这里以我自己的为例:
DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///sampledb"); dataSource.setUsername("root"); dataSource.setPassword("");3 创建 jdbcTemplate 对象,设置数据源:
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);4 调用 jdbcTemplate 对象里面的方法来实现curd 操作。
下面就分别来讲下 jdbcTemplate 的 curd 操作。
首先先创建一个数据库命名为 sampledb, 在数据库中新增一个表。添加几条记录,如下:
增加 //1.添加操作 @Test public void add(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///sampledb"); dataSource.setUsername("root"); dataSource.setPassword(""); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 //创建sql 语句 String sql = "insert into user values(?,?)"; int rows = jdbcTemplate.update(sql, "lucy", "250"); System.out.println(rows); } 修改 //2.修改操作 @Test public void update(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///sampledb"); dataSource.setUsername("root"); dataSource.setPassword(""); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 //创建sql 语句 String sql = "update user set password=? where username=?"; int rows = jdbcTemplate.update(sql, "1314", "lucy"); System.out.println(rows); } 删除 //3.删除操作 @Test public void delete(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///sampledb"); dataSource.setUsername("root"); dataSource.setPassword(""); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 //创建sql 语句 String sql = "DELETE FROM USER WHERE username=?"; int rows = jdbcTemplate.update(sql, "lucy"); System.out.println(rows); }这里的增删改操作都是使用 jdbcTemplate.update() 方法。
查询 查询返回某一个值使用 queryForObject(String sql, Class<T> requiredType) 方法。
(1)第一个参数是 sql 语句。
(2)第二个参数返回类型的 class。
举个栗子:
//查询操作 @Test public void query(){ //设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:///sampledb"); dataSource.setUsername("root"); dataSource.setPassword(""); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 //查询方法得到记录数 String sql = "select count(*) from user"; //调用 jdbcTemplate的方法 int count = jdbcTemplate.queryForObject(sql, Integer.class); System.out.println(count); }将从 user 表中查询所有的记录数量。
jdbc实现为了方便理解,我们使用 jdbc 来实现查询某个返回对象的操作。
还是举个栗子,查询 user 表下的所有返回对象。
新建 User.java 文件,对数据库中的 username 和 password 实现封装操作:
package cn.itcast.jdbc; public class User { private String username; private String password; 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; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }