首先spring针对Java EE三层,都有对应的解决技术。而对于持久化层,都提供了封装,方便操作。如jdbcTemplate对jdbc进行了封装。
下面针对jdbcTemplate的操作进行测试。
—>使用jdbcTemplate的增加,修改,删除,可以使用同一个方法实现,jdbcTemplate.update(sql, Object...args); sql:指需要执行的SQL语句,后面的是可变参数,表示预处理的参数设置。
—>而使用JbdcTemplate执行查询操作,需要实现RowMapper接口,里面的方法需要我们自己实现,对返回的结果集ResultSet进行封装处理。
对查询返回单个的数据,比如表中的总数:(使用
对于对象的返回使用这个返回的是对象结果集
或者使用这个是输入参数的返回的对象结果集
以下分各种情况进行数据测试。
1.增加的代码实现如下所示:
1 package com.gp.jdbc; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 import org.springframework.jdbc.datasource.DriverManagerDataSource; 5 6 public class TemplateDemo { 7 8 //使用jdbcTemplate实现数据的增加 9 public void add (){10 DriverManagerDataSource dataSource=new DriverManagerDataSource();11 dataSource.setDriverClassName("com.mysql.jdbc.Driver");12 dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");13 dataSource.setUsername("root");14 dataSource.setPassword("guo");15 16 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);17 String sql="insert into user(name,password) values(?,?)";18 int result=jdbcTemplate.update(sql, "丽丽","123456");19 if(result==1){20 System.out.println("添加成功");21 }else{22 System.out.println("添加失败");23 }24 }25 26 27 public static void main(String[] args) {28 TemplateDemo td=new TemplateDemo();29 td.add();30 }31 }
数据表中的结果前后如下所示:
2.下面把id=6的密码改为111111的程序如下所示;对上面的方法稍作修改:
package com.gp.jdbc;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class TemplateDemo1 { //使用jdbcTemplate实现数据的修改 public void update (){ DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis"); dataSource.setUsername("root"); dataSource.setPassword("guo"); JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); String sql="update user set password=? where name=? "; int result=jdbcTemplate.update(sql, "111111","丽丽"); if(result==1){ System.out.println("修改成功"); }else{ System.out.println("修改失败"); } } public static void main(String[] args) { TemplateDemo1 td=new TemplateDemo1(); td.update(); }}
修改后数据库表中的截图如下所示:
3.实现数据的删除操作,其代码如下所示:
1 package com.gp.jdbc; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 import org.springframework.jdbc.datasource.DriverManagerDataSource; 5 6 public class TemplateDemo2 { 7 8 //使用jdbcTemplate实现数据的修改 9 public void delete (){10 DriverManagerDataSource dataSource=new DriverManagerDataSource();11 dataSource.setDriverClassName("com.mysql.jdbc.Driver");12 dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");13 dataSource.setUsername("root");14 dataSource.setPassword("guo456789");15 16 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);17 String sql="delete from user where name=? ";18 int result=jdbcTemplate.update(sql, "丽丽");19 if(result==1){20 System.out.println("删除成功");21 }else{22 System.out.println("删除失败");23 }24 }25 26 27 public static void main(String[] args) {28 TemplateDemo2 td=new TemplateDemo2();29 td.delete();30 }31 }
执行删除操作后的代码如下所示:
以上的增加,修改和删除都可以使用
4.实现查询一个表中数据的总数,结果如下所示:
package com.gp.jdbc;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class TemplateDemo3 { //使用jdbcTemplate实现数据的查询 public void select (){ DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis"); dataSource.setUsername("root"); dataSource.setPassword("guo"); JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource); String sql="select count(*) from user "; int result=jdbcTemplate.queryForObject(sql, Integer.class); System.out.println("查询结果为:"+result); } public static void main(String[] args) { TemplateDemo3 td=new TemplateDemo3(); td.select(); }}
5.查询表中的一条数据,测试代码如下所示:
实体类:
package com.gp.entity;public class User { private String name; private String password; @Override public String toString() { return "User [name=" + name + ", password=" + password + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
测试类:
1 package com.gp.jdbc; 2 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 6 import org.springframework.jdbc.core.JdbcTemplate; 7 import org.springframework.jdbc.core.RowMapper; 8 import org.springframework.jdbc.datasource.DriverManagerDataSource; 9 10 import com.gp.entity.User;11 12 public class TemplateDemo4 {13 14 // 使用jdbcTemplate实现数据的查询15 public void select() {16 DriverManagerDataSource dataSource = new DriverManagerDataSource();17 dataSource.setDriverClassName("com.mysql.jdbc.Driver");18 dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");19 dataSource.setUsername("root");20 dataSource.setPassword("guo456789");21 22 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);23 String sql = "select * from user where name=? ";24 User user = (User) jdbcTemplate.queryForObject(sql,25 new UserRowMapper(), "张三");26 System.out.println("查询结果为:" + user);27 }28 29 public static void main(String[] args) {30 TemplateDemo4 td = new TemplateDemo4();31 td.select();32 }33 }34 35 class UserRowMapper implements RowMapper{36 37 @Override38 public User mapRow(ResultSet rs, int rowNum) throws SQLException {39 User user = new User();40 user.setName(rs.getString("name"));41 user.setPassword(rs.getString("password"));42 return user;43 }44 45 }
运行结果如下所示:
6.使用jdbcTemplate实现结果集的查询,测试代码如下所示:
实体类不变,测试类如下所示:
package com.gp.jdbc;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;import org.springframework.jdbc.datasource.DriverManagerDataSource;import com.gp.entity.User;public class TemplateDemo5 { // 使用jdbcTemplate实现数据的查询 public void select() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis"); dataSource.setUsername("root"); dataSource.setPassword("guo456789"); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); String sql = "select * from user"; Listusers = jdbcTemplate.query(sql, new UserRowMapper1()); System.out.println("查询结果为:"); for (User u : users) { System.out.println(u); } } public static void main(String[] args) { TemplateDemo5 td = new TemplateDemo5(); td.select(); }}class UserRowMapper1 implements RowMapper { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setName(rs.getString("name")); user.setPassword(rs.getString("password")); return user; }}
测试结果为: