Spring中jdbcTemplate和RowMapper的用法

合集下载

Spring中的JDBCTemplate使用(非常详细的配置过程)

Spring中的JDBCTemplate使用(非常详细的配置过程)

Spring中的JDBCTemplate使用(非常详细的配置过程)Spring中的JDBCT emplate使用数据库准备:创建数据库创建表:Java代码:1、创建web 工程 springJdbcTemplate2、添加Spring能力在此需要将jdbc包也同时加入3、配置上mysql的连接驱动(拷贝mysql驱动包,如果不拷贝报错很诡异)在applicationContext.xml中进行配置在beans标签中填写<bean id="jdbcTemplate"class="org.springframework.jdbc. core.JdbcTemplate"><property name="dataSource"><ref local="dataSource"/></property></bean><bean id="dataSource"class="org.springframework.jdbc.d atasource.DriverManagerDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><value>jdbc:mysql://localhost:3306/myspringjdbcdb</valu e></property><property name="username"><value>root</value></property><property name="password"><value>root</value></property></bean>4、创建包结构并且写出类(每个类中可以没内容)5、每个类中的源代码UserDao.javaUserDaoImp.java此项写完填写在applicationContext.xml中进行配置在beans标签中填写User.java每个成员变量都写上get和set方法并且在此类中还要加入此项写完填写在applicationContext.xml中进行配置在beans标签中填写测试类T estAction.java打印出结果:。

jdbctemplate类中的方法

jdbctemplate类中的方法

jdbctemplate类中的方法JdbcTemplate类是Spring框架中的一个核心类,它被广泛用于数据库访问。

它简化了常用的数据库操作,如查询、更新、删除等,同时还提供了许多便利的方法来处理SQL语句和参数。

以下是JdbcTemplate类中的一些常用方法:1. queryForObject该方法用于执行一个SQL查询,并返回单个结果对象。

如果查询结果为空,则返回null。

如果查询结果不止一个,则抛出异常。

2. queryForList该方法用于执行一个SQL查询,并返回多个结果对象。

结果以List形式返回,每个对象都代表一行记录。

如果查询结果为空,则返回空List。

3. query该方法用于执行一个SQL查询,并将结果映射到指定的Java对象。

可以使用RowMapper接口来实现自定义的映射逻辑。

4. update该方法用于执行一个SQL更新操作,如INSERT、UPDATE、DELETE 等。

它返回更新的行数。

5. batchUpdate该方法用于批量执行一组SQL更新操作。

它接受一个SQL数组作为参数,并返回一个整数数组,其中每个元素代表相应的更新操作影响的行数。

6. execute该方法用于执行任意的SQL语句,不返回任何结果。

它可以用于执行存储过程、DDL语句等。

JdbcTemplate类提供了许多其他方法,如queryForRowSet、queryForMap、queryWithParameters等,它们都可以根据具体的需求来选择使用。

使用JdbcTemplate类可以大大简化数据库访问的代码量,提高开发效率。

jdbctemplate调用存储过程返回多行

jdbctemplate调用存储过程返回多行

jdbctemplate调用存储过程返回多行在Spring 的JdbcTemplate 中,如果要调用存储过程并返回多行结果,可以使用`query` 方法,并通过`RowMapper` 将每行结果映射到相应的对象。

下面是一个简单的示例:假设有一个存储过程,接收输入参数,并返回多行结果:```sqlCREATE PROCEDURE getEmployees(IN departmentId INT)BEGINSELECT * FROM employees WHERE department_id = departmentId;END;```然后,你可以使用JdbcTemplate 来调用这个存储过程:```javaimport org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;import org.springframework.stereotype.Repository;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;@Repositorypublic class EmployeeRepository {private final JdbcTemplate jdbcTemplate;public EmployeeRepository(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public List<Employee> getEmployeesByDepartment(int departmentId) {String sql = "CALL getEmployees(?)";// 使用query 方法调用存储过程,通过RowMapper 映射结果到Employee 对象return jdbcTemplate.query(sql, new Object[]{departmentId}, new EmployeeRowMapper());}private static class EmployeeRowMapper implements RowMapper<Employee> {@Overridepublic Employee mapRow(ResultSet resultSet, int i) throws SQLException {// 将查询结果映射到Employee 对象Employee employee = new Employee();employee.setId(resultSet.getInt("id"));employee.setName(resultSet.getString("name"));// 其他属性的映射...return employee;}}}```在上述示例中,`EmployeeRepository` 类通过`jdbcTemplate.query` 方法调用存储过程,并使用`EmployeeRowMapper` 将查询结果映射到`Employee` 对象。

jdbctemplate方法详解

jdbctemplate方法详解

JdbcTemplate是Spring框架中提供的一个模板类,用于简化Java 应用程序与数据库之间的交互。

它提供了许多方便的方法,使得开发人员可以轻松地执行CRUD(创建、读取、更新和删除)操作。

以下是JdbcTemplate常用方法的详解:1. `getDataSource()`:返回与该模板关联的数据源。

2. `query(String sql, Object[] args, RowMapper<T> rowMapper)`:执行查询语句,返回结果集中的数据列表。

其中,sql是查询语句,args是查询参数的数组,rowMapper是将每一行数据映射为对象的映射器。

3. `queryForObject(String sql, Object[] args, RowMapper<T> rowMapper)`:执行查询语句,返回结果集中的第一行数据。

如果结果集为空,则返回null。

与`query()`方法类似,但只返回单个对象。

4. `update(String sql, Object[] args)`:执行更新语句,返回受影响的行数。

其中,sql是更新语句,args是更新参数的数组。

5. `update(String sql, Object[] args, int[] updateCounts)`:执行更新语句,返回受影响的行数数组。

其中,sql是更新语句,args是更新参数的数组,updateCounts是每个参数对应的受影响行数。

6. `execute(String sql, Object[] args, int[] updateCounts)`:执行任意类型的SQL语句(不只是更新语句),返回受影响的行数数组。

其中,sql是任意类型的SQL语句,args是参数的数组,updateCounts是每个参数对应的受影响行数。

7. `queryForList(String sql, Object[] args)`:执行查询语句,返回结果集中的数据列表。

【Spring】利用spring的JdbcTemplate查询返回结果映射到自定义类型

【Spring】利用spring的JdbcTemplate查询返回结果映射到自定义类型

【Spring】利⽤spring的JdbcTemplate查询返回结果映射到⾃定义类型// org.springframework.jdbc.core.JdbcTemplate 中的查询⽅法基本都有⽀持参数RowMapper<T> rowMapper的重载⽅法。

下⾯只是随便举例2个,还有很多public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {...};public <T> T queryForObject(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {...};//demo01List<Person> person = jdbcTemplate.query(sql, new RowMapper<Person>() {@Overridepublic Person mapRow(ResultSet rs, int i) throws SQLException {Person p = new Person(); //特别需要new,不然如果结果集是list就只有1个对象p.setId(rs.getString("id"));return p;}});//特别如果如demo写,很⿇烦要set很多。

此时spring提供了⼀个RowMapper的实现类BeanPropertyRowMapper//demo02List<Person> person = jdbcTemplate.query(sql, new BeanPropertyRowMapper(Person.class));这篇博客的主要⽬的是分析BeanPropertyRowMapper的实现是怎么样。

spring中jdbctemplete的使用

spring中jdbctemplete的使用

spring中jdbctemplete的使用问题:spring中jdbctemplete的使用回答:前言:本文指在介绍Spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基本概念。

目标是使读者能够对JdbcTemplate快速地掌握和使用。

环境搭建:1. Spring配置JdbcTemplate的使用需要有DataSource的支持,所以在配置文件中,我们首先要配置一个OracleDataSource,然后在将这个DataSource配置到JdbcTemplate里。

接着将JdbcTemplate配置进DAO层,最后将DAO配置进Model层。

jdbc:oracle:thin:root/123@localhost:1521/XE 2. 环境配置,如图:使用方法:查找多行查询:class UserRowMapper implements RowMapper public Object mapRow(ResultSet rs,int index) throws SQLException User u = new User();u.setId(rs.getString("ID"));u.setName(rs.getString("Nam e"));u.setPassword(rs.getString("Password"));return u; public List select(String where) List list;String sql = "select * from admin "+where;list = jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));return list; List最终返回的是满足条件的User队列。

jdbctemplate 的用法

jdbctemplate 的用法

JdbcTemplate是Spring框架中提供的一个模板类,用于简化数据库的操作。

以下是JdbcTemplate的一些基本用法:1. 创建JdbcTemplate对象:```javaDataSource dataSource = createDataSource(); // 创建数据源对象JdbcTemplate template = new JdbcTemplate(dataSource); // 创建JdbcTemplate对象```2. 执行增、删、改操作:```java// 定义要执行的SQL语句String sql = "UPDATE user SET age = ? WHERE name = ?";// 执行更新操作,返回受影响的行数int affectedRows = template.update(sql, new Object[]{30, "Tom"});```3. 执行查询操作:```java// 定义要执行的SQL语句String sql = "SELECT * FROM user WHERE name = ?";// 执行查询操作,将查询结果封装为List<Map<String, Object>>类型List<Map<String, Object>> results = template.queryForList(sql, new Object[]{"Tom"});```4. 执行查询操作,并将结果封装为JavaBean类型:```java// 定义要执行的SQL语句String sql = "SELECT * FROM user WHERE name = ?";// 执行查询操作,将查询结果封装为User对象User user = template.queryForObject(sql, new Object[]{"Tom"}, new UserMapper());```其中,UserMapper是一个用于映射查询结果和JavaBean类型的Mapper接口。

jdbctemplate 参数

jdbctemplate 参数

jdbctemplate 参数JdbcTemplate是Spring框架提供的一种方便的JDBC操作方式,可以大大简化JDBC的开发。

它的构造方法如下:public JdbcTemplate(DataSource dataSource)。

其中,dataSource是实现DataSource接口的数据源。

下面是JdbcTemplate的常用方法及其参数:- execute(String sql):执行任意SQL语句,返回boolean类型的值,表示是否执行成功。

- query(String sql, RowMapper<T> rowMapper, Object... args):执行查询操作,返回查询结果的List集合,rowMapper是实现RowMapper接口的行映射器,args是可变参数,用于传递查询参数。

- queryForObject(String sql, Class<T> requiredType, Object... args):执行查询操作,返回一个单一结果,requiredType是返回结果的类型,args是可变参数,用于传递查询参数。

- update(String sql, Object... args):执行更新操作,返回更新的记录数,args是可变参数,用于传递更新参数。

- batchUpdate(String sql, List<Object[]> batchArgs):批量执行更新操作,batchArgs是一个二维数组,表示批量更新的参数列表。

- call(CallableStatementCreator csc, List<SqlParameter> declaredParameters):执行存储过程或函数,csc是实现CallableStatementCreator接口的回调对象,用于创建CallableStatement对象;declaredParameters是存储过程或函数的参数列表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring中jdbcTemplate的用法实例(一)
博客分类:
spring
一、首先配置JdbcTemplate;
要使用Jdbctemplate 对象来完成jdbc 操作。

通常情况下,有三种种方式得到JdbcTemplate 对象。

第一种方式:我们可以在自己定义的DAO 实现类中注入一个DataSource 引用来完成JdbcTemplate 的实例化。

也就是它是从外部“注入” DataSource 到DAO 中,然后自己实例化JdbcTemplate,然后将DataSource 设置到JdbcTemplate 对象中。

第二种方式:在 Spring 的 IoC 容器中配置一个 JdbcTemplate 的 bean,将DataSource 注入进来,然后再把JdbcTemplate 注入到自定义DAO 中。

第三种方式: Spring 提供了类,这个类中定义了 JdbcTemplate 属性,也定义了DataSource 属性,当设置DataSource 属性的时候,会创建jdbcTemplate 的实例,所以我们自己编写的DAO 只需要继承JdbcDaoSupport 类,然后注入DataSource 即可。

提倡采用第三种方法。

虽然下面的用法中采用了前两种方法
配置方法有3种:
1、
Java代码
1.public class UserServiceImpl implements UserService {
2.~
3.
4.private JdbcTemplate jdbcTemplate;
5.
6.public JdbcTemplate getJdbcTemplate() {
7.return jdbcTemplate;
8.}
9.
1.pdate(sql);
2.}
1.etUsername());
2.(2, ((User)(i)).getPassword
());
3.*
4.(3, ((User)(i)).getId
());
5.}
6.
7.@Override
8.public int getBatchSize() {
9.return();
10.}
11.}
12.);
13.
14.return updateCounts;
15./
16.}
17.
我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String则不需要.
如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.
可以通过建立内部类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.
这里只是一个简单的例子:
public class TestDao { private JdbcTemplate jt; public void
setJt(JdbcTemplate jt) { = jt; } public List<TNpc>
getAll(){ String sql = "select * from t_npc"; //使用 List list = (sql, new NpcRowMapper()); return list; } /** * 定义内部类实现RowMapper接口 */ public class NpcRowMapper implements
RowMapper{ //实现mapRow方法 public Object mapRow(ResultSet rs, int num) throws SQLException { //对类进行封装 TNpc npc = new TNpc(); ("id")); ("name")); return
npc; } } }
try
{
("true");
}
catch
{
("false");
}
finally
{
("finally");
}
try
{
//执行的代码,其中可能有异常。

一旦发现异常,则立即跳到catch执行。

否则不会执行catch里面的内容
}
catch
{
//除非try里面执行代码发生了异常,否则这里的代码不会执行
}
finally
{
//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
}。

相关文档
最新文档