JDBCTemplate介绍与使用
- Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发,使用JDBCTemolate能大大简化JDBC开发
导入jar包
- commons-logging-1.2.jar
- spring-beans-5.0.0.RELEASE.jar
- spring-core-5.0.0.RELEASE.jar
- spring-jdbc-5.0.0.RELEASE.jar
- spring-tx-5.0.0.RELEASE.jar
- 下载:https://pan.baidu.com/s/1w3Zzyuf1cLE1aPfQO9PW-Q
-
或者使用maven导入依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.2.RELEASE</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> </dependencies>
JDBCTemplate方法介绍
- update():执行DML语句。增、删、改语句
- queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将一条记录封装为一个map集合
- queryForList():查询结果将结果集封装为list集合
- 一行数据封装在一个map中,再将map封装到list中
- query():将结果封装为JavaBean对象
- queryForObject():将查询结果封装为对象
- 一般用于聚合函数的查询
JDBCTemplete使用
-
对象创建
private static JdbcTemplate template; public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt = null; try { //创建Properties对象,用于加载配置文件 Properties pro = new Properties(); //加载配置文件 pro.load(DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties")); //获取数据库连接池对象 DataSource ds = DruidDataSourceFactory.createDataSource(pro); //创建JDBCTemplate对象 template = new JdbcTemplate(ds); //修改id为1的学生数学成绩为202 test1(); //添加一条记录 test2(); //删除刚刚添加的记录 test3(); //查询id为1的用户信息封装到map中 test4(); //查询所有数据封装为Map的List中 test5(); //查询所有数据封装为Student对象的List中 test6(); //查询所有数据总数 test7(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
-
修改id为1的学生数学成绩为202
/** * 修改id为1的学生数学成绩为202 */ public static void test1(){ String sql = "update student set math = 202 where id = ?"; int count = template.update(sql,1); System.out.println(count); }
-
添加一条记录
/** * 添加一条记录 */ public static void test2(){ String sql = "insert into student(id,name,age,math,english) values(?,?,?,?,?)"; int count = template.update(sql,9,"里斯",8,22,34); System.out.println(count); }
-
删除刚刚添加的记录
/** * 删除刚刚添加的记录 */ public static void test3(){ String sql = "delete from student where id = ?"; int count = template.update(sql,9); System.out.println(count); }
-
查询id为1的用户信息封装到map中
/** * 查询id为1的用户信息 * 封装到map中 */ public static void test4(){ String sql = "select * from student where id = ?"; Map<String, Object> map = template.queryForMap(sql,1); System.out.println(map); }
-
查询所有数据封装为Map的List中
/** * 查询所有数据 * 封装为Map的List中 */ public static void test5(){ String sql = "select * from student"; List<Map<String, Object>> list = template.queryForList(sql); for (Map<String, Object> stringObjectMap : list) { System.out.println(stringObjectMap); } }
-
查询所有数据封装为Student对象的List中
/** * 查询所有数据 * 封装为Student对象的List中 */ public static void test6(){ String sql = "select * from student"; List<Student> list = template.query(sql,new BeanPropertyRowMapper<Student>(Student.class)); for (Student student : list) { System.out.println(student); } }
-
查询所有数据总数
/** * 查询所有数据总数 */ public static void test7(){ String sql = "select count(id) from student"; int total = template.queryForObject(sql,Integer.class); System.out.println(total); }