1、什么是 JdbcTemplate
-
Spring JdbcTemplate
也叫 Spring JDBC模块,主要负责数据库资源管理和错误处理,简化对数据库的操作。 -
Spring JdbcTemplate
是 Spring 框架中提供的一个对象,是对原始繁琐的 JDBC API 对象的简单封装。Spring 框架为我们提供了很多的操作模板类。例如: 操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。 -
JdbcTemplate
并不是唯一进行数据库访问的方法,还有NamedParameterJdbcTemplate
、SimpleJdbcInsert
和SimpleJdbcCall
、RDBMS 对象(包括MappingSqlQuery,SqlUpdate和StoredProcedure)
。而JdbcTemplate
是经典且最受欢迎的 Spring JDBC 方法。 -
Spring 的 JDBC 模块由四个不同的包组成:
包名 说明 core 包含 JDBC 的核心包,包括 JdbcTemplate
类、NamedParameterJdbcTemplate类
、SimpleJdbcInsert
类和SimpleJdbcCall
类datasource 访问数据源的使用工具类,它有多种数据源的实现,可以在 JavaEE 容器外部测试 JDBC 代码 object 以面向对象的方式访问数据库,它允许执行查询并将返回结果作为业务对象,可以在数据表的列和业务对象的属性直接映射查询结果。 support 包含了 core 和object 包的支持类
2、使用JdbcTemplate
JdbcTemplate
的开发步骤需:
-
导入 spring-jdbc 和 spring-tx 的包:
<!--导入spring的jdbc坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.5.RELEASE</version> </dependency> <!--导入spring的tx坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.0.5.RELEASE</version> </dependency>
-
创建数据库表和实体
-
创建JdbcTemplate对象:创建 JdbcTemplate 对象的方式有两种,一种是直接创建,一种通过 IOC 创建。
//1.配置数据源 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/spring"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建JdbcTemplate对象 JdbcTemplate jdbcTemplate = new JdbcTemplate(); // 3、设置数据源给 JdbcTemplate jdbcTemplate.setDataSource(dataSource);
这种是通过实例化 JdbcTemplate 对象,给对象配置数据源,然后再通过对象执行数据库操作。而下面是将数据源和 JdbcTemplate 对象创建权交给了 IOC 容器,通过配置 XML 的当时完成的:
<!--配置数据源--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/spring"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <!--配置 JdbcTemplate 对象--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean>
上述代码是通过 XML 的方式配置,具体的调用使用如下:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContent.xml"); //创建JdbcTemplate对象,在创建过程已经将 数据源 配置给了对象 JdbcTemplate jdbcTemplate = applicationContext.getBean("jdbcTemplate",JdbcTemplate.class);
-
执行数据库操作:在完成 对象的创建之后,我们就需要使用 对象进行 CRUD 操作,具体内容如下。
3、具体的数据库操作
- 使用 JdbcTemplate 增删改(INSERT,UPDATE 和 DELETE):通过 JdbcTemplate 对象中的一系列
updata()
方法完成,常用方法如下:方法 说明 int update(String sql) 该方法比较简单,直接执行传入的 sql 语句,并返回搜影响的行数 int update(String sql,PreparedStatementSetter pss) 该方法通过 PreparedStatementSetter 设置 sql 语句中的参数,并返回受影响的行 int update(PreparedStatementSetter pss) 该方法执行 PreparedStatementSetter ,并返回受影响的行 int update(String sql,Object… args) 该方法使用 Object… 设置 sql 语句中的参数,且参数不是为 NULL ,并返回受影响的行 //接上面的 JdbcTemplate 对象创建 int num1 =jdbcTemplate.update("insert into user (name,age) values (?,?)", "zhangsan", 18); int num2 =jdbcTemplate.update("update into user set age=? where name=?", "zhangsan", 18); int num3 =jdbcTemplate.update("delete from user where name=?","zhangsan");
- 使用 JdbcTemplate 查询:通过 JdbcTemplate 对象中的一系列
query()
方法完成,因为该方法过多,我们对比较常用的记忆就行://查询全部 List<User> userList = jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<User>(User.class)); //根据条件查询 List<User> userList1 = jdbcTemplate.query("select * from user where age=? ", new BeanPropertyRowMapper<User>(User.class), "18"); //查询一条数据 User user = jdbcTemplate.queryForObject("select * from user where age=? ", new BeanPropertyRowMapper<User>(User.class), "18"); //查询一行任何类型的数据,最后一个参数指定返回结果类型 Integer num = jdbcTemplate.queryForObject("select count(*) from user", Integer.class); //查询一行数据并将该行数据转换为Map返回 Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap("select * from user", new BeanPropertyRowMapper<User>(User.class));
只对 JdbcTemplate 进行简单的了解,在进行数据访问时一般不会使用。