特殊的另有这个,也得添加上
- spring context 依赖 (spring6 的依赖)
- mysql-connector-java(关于MySQL驱动的依赖,因为我们要连接数据库,这里我们连接的是MySQL数据库)
- spring-jdbc (spring jdbc,这个依赖中有JdbcTemplate)
- junit (Junit4 单位测试依赖)
复制代码
- <repositories>
- <repository>
- <id>repository.spring.milestone</id>
- <name>Spring Milestone Repository</name>
- <url>https://repo.spring.io/milestone</url>
- </repository>
- </repositories>
JdbcTemplate 是Spring 提供好的类,这类的完整类名是:org.springframework.jdbc.core.JdbcTemplate 。这个类上的使用,我们 new 对象就好了,而Spring 可以帮我们 new 对象,以是,我们就将这个new JdbcTemplate 对象这件事交给 Spring 来做。直接将这个类配置到 spring.xml 的配置文件当中,纳入 Bean管理即可。我们来看一下这个JdbcTemplate源码:
自己的数据源,数据源存在的目标是为了提供 Connection 对象;只要实现了DataSource 接口的都是数据源:德鲁伊连接池,C3p0连接池,dbcp连接池,都实现了DataSource 接口如下:
- 第一个参数:String sql
- 第二个参数: @Nullable Object... args 是一个可变参数(是一个数组),表现
表现:SQL语句当中的? 占位符的要填入的值。
返回值:int 表现修改/更新的记录条数。
- 第一个参数:String sql 要执行的SQL语句
- 第二个参数:BeanPropertyRowMapper 与对应数据库表中 bean 类的相映射的类。一般用: new BeanPropertyRowMapper(T.class) 这样的对象装配上。Bean属性值和数据库记录行的映射对象。在构造方法中指定映射的对象类型。
- 第三个参数:SQL语句当中的 ? 占位符。可变长参数,给sql语句的占位符问号传值。
- 返回值:运用了泛型,也就是对应数据库表中在Java当中相对应,映射的 bean 类。
- 比如这里我们查询的是一个数据表中有几条记录,几条记录,就是一个值了,一个数值类型的类对象了,可以是 int.class,也可以是 long.class,还可以是 short.class 因为只要是数值类型就可以了。
- 返回值是对应类的包装类,
- 第一个参数:同样还是:要执行的SQL语句
- 第二个参数:。Bean属性值和数据库记录行的映射对象。在构造方法中指定映射的对象类型。;BeanPropertyRowMapper 与对应数据库表中 bean 类的相映射的类。一般用: new BeanPropertyRowMapper(T.class) 这样的对象装配上。
- 返回值:是一个List 聚集了,因为我们查询到的多条记录,天然就是存储到聚集当中去了。
- 第一个参数:String sql 要执行的SQL语句
- 第二个参数: List batchArgs 是一个List聚集当中存储 Object[ ] 数组,注意是数组,这个List 就是,我们批量插入数据时,对于SQL语句当中的 ? 占位符的传值,因为这个参数是: List batchArgs,以是我们需要将我们 ?占位符的值,放入到List 聚集当中,再作为参数,传给jdbcTemplate.batchUpdate() 方法。
插入这条记录,产生了一条记录的影响。
- 返回值:就是你各个批量插入的记录的,各个成功的记录条数,比如这里我们批量添加了3条记录,那么假如三条记录都插入成功了的话,就是[1,1,1]。表现每执行一次这个:"insert into user2(real_name,age) values(?,?)"; SQL语句就会影响到一条记录。
三条记录,各自都是只产生了一条记录的影响
这里我们使用回调函数,查询 user 数据表中 id 为 2的 用户的,id, real_name,age 的记录信息
- 第一个参数是:String sql 要执行的SQL语句
- 第二个参数是:PreparedStatementCallback action ,是个接口,我们要传其实例化对象,
PreparedStatementCallback,一般我们通常是使用 lambda 表达式 ,简化代码。
需要注意的是:注册回调函数,当execute 方法执行的时候,回调函数中的doInPreparedStatement()会被调用
- 返回值:就是这里运用的泛型,返回值,就是你传的 T.class 的 Bean 对象。
需要特殊注意的是:注意这里是:driverClassName,是简单类型进行set注入对属性赋值,简单类型可以用 value
而假如是使用:driver,用 ref了这里我们用:driverClassName,进行简单类型的set 注入,对 this.driver 成员变量的属性赋值。
6. 最后:
- JdbcTemplate 是Spring 提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码,当然,你也可以不消,可以让Spring集成其它的ORM框架,例如:MyBatis,Hibernate 等。
- 使用JdbcTemplate 需要导入的如下 jar依赖
复制代码
- 1. spring context 依赖 (spring6 的依赖)
- 2. mysql-connector-java(关于MySQL驱动的依赖,因为我们要连接数据库,这里我们连接的是MySQL数据库)
- 3. spring-jdbc (spring jdbc,这个依赖中有JdbcTemplate)
- 4. junit (Junit4 单元测试依赖)
- 在Spring当中的JdbcTemplate,对于数据库上的增删改,执行SQL语句都是使用update() 的方法处理的。
- 关于查询一条记录,使用 jdbcTemplate.queryForObject() 方法:
- 查询数据表中的多个对象,我们就要使用:jdbcTemplate.query() 方法了
- 查询数据表当中有几条记录,对应查询数据表中的一个值的内容,我们同样还是使用:jdbcTemplate.queryForObject() 方法来进行。不同的是,这个参数是两个的,是对应的类对象。需要注意的第二个参数,使用的是:对应返回类型的 T.class 类
- 使用回调函数,可以到场的更加细节:例如:假如你想写JDBC代码,可以使用callback回调函数
想要执行回调函数,用使用上 jdbcTemplate.execute() 方法, 需要注意的是:注册回调函数,当execute 方法执行的时候,回调函数中的doInPreparedStatement()会被调用
- 对于数据表中的批量添加删除修改数据,我们这里需要用上:jdbcTemplate.batchUpdate() 方法
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |