📅  最后修改于: 2020-12-04 07:56:22             🧑  作者: Mango
Spring JdbcTemplate是一种强大的机制,可以连接到数据库并执行SQL查询。它在内部使用JDBC API,但消除了JDBC API的许多问题。
JDBC API的问题如下:
Spring JdbcTemplate消除了上述所有JDBC API问题。它提供了直接编写查询的方法,因此节省了大量工作和时间。
Spring框架提供了以下用于JDBC数据库访问的方法:
它是Spring JDBC支持类的中心类。它负责创建和释放资源,例如创建和关闭连接对象等。因此,如果您忘记关闭连接,则不会导致任何问题。
它通过org.springframework.dao包中定义的异常类来处理异常并提供有用的异常消息。
我们可以借助JdbcTemplate类来执行所有数据库操作,例如从数据库中插入,更新,删除和检索数据。
让我们看看spring JdbcTemplate类的方法。
No. | Method | Description |
---|---|---|
1) | public int update(String query) | is used to insert, update and delete records. |
2) | public int update(String query,Object… args) | is used to insert, update and delete records using PreparedStatement using given arguments. |
3) | public void execute(String query) | is used to execute DDL query. |
4) | public |
executes the query by using PreparedStatement callback. |
5) | public |
is used to fetch records using ResultSetExtractor. |
6) | public |
is used to fetch records using RowMapper. |
我们假设您已经在Oracle10g数据库中创建了下表。
create table employee(
id number(10),
name varchar2(100),
salary number(10)
);
此类包含3个带有构造函数,setter和getter的属性。
package com.javatpoint;
public class Employee {
private int id;
private String name;
private float salary;
//no-arg and parameterized constructors
//getters and setters
}
它包含一个属性jdbcTemplate和三个方法saveEmployee(),updateEmployee和deleteEmployee()。
package com.javatpoint;
import org.springframework.jdbc.core.JdbcTemplate;
public class EmployeeDao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public int saveEmployee(Employee e){
String query="insert into employee values(
'"+e.getId()+"','"+e.getName()+"','"+e.getSalary()+"')";
return jdbcTemplate.update(query);
}
public int updateEmployee(Employee e){
String query="update employee set
name='"+e.getName()+"',salary='"+e.getSalary()+"' where id='"+e.getId()+"' ";
return jdbcTemplate.update(query);
}
public int deleteEmployee(Employee e){
String query="delete from employee where id='"+e.getId()+"' ";
return jdbcTemplate.update(query);
}
}
DriverManagerDataSource用于包含有关数据库的信息,例如驱动程序类名称,连接URL,用户名和密码。
DriverManagerDataSource类型的JdbcTemplate类中有一个名为datasource的属性。因此,我们需要在JdbcTemplate类中为datasource属性提供对DriverManagerDataSource对象的引用。
在这里,我们在EmployeeDao类中使用JdbcTemplate对象,因此我们通过setter方法传递它,但是您也可以使用构造函数。
此类从applicationContext.xml文件获取Bean,然后调用saveEmployee()方法。您也可以通过取消注释代码来调用updateEmployee()和deleteEmployee()方法。
package com.javatpoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)ctx.getBean("edao");
int status=dao.saveEmployee(new Employee(102,"Amit",35000));
System.out.println(status);
/*int status=dao.updateEmployee(new Employee(102,"Sonoo",15000));
System.out.println(status);
*/
/*Employee e=new Employee();
e.setId(102);
int status=dao.deleteEmployee(e);
System.out.println(status);*/
}
}