首先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<User> { 36 37 @Override 38 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"; List<User> users = 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<User> { @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; } }
测试结果为: