Spring:Spring JDBC的简单使用

Spring:Spring JDBC的简单使用


      数据库使用普通的JDBC的连接的话,使用比较繁琐,需要写不必要的代码来处理异常,打开和关闭数据库连接等,但是使用Spring的JDBC框架的话,所有低层次细节从打开连接,准备和执行SQL语句,过程异常,处理事务,最后关闭连接等都会变得简单。

      我们要做的只是定义连接参数,并指定要执行的SQL语句,并做必要的工作,在每次操作时从数据库中获取数据。

      Spring JDBC提供了一些方法和相应不同的类与数据库进行交互。接下来采取最流行的做法,利用JdbcTemplate框架。

      JdbcTemplate类负责执行SQL查询,更新语句和存储过程调用。使用JdbcTemplate类时,通常的做法是配置一个DataSource在Spring配置文件,然后依赖关系注入该共享数据源到DAO类。

      接下来通过一个示例进行JdbcTemplate操作的演示。

      首先,在数据库test中创造数据库表 student 。假设使用MySQL数据库,如果使用其他数据库,那么可以相应地改变你的DDL和SQL查询。

 CREATE TABLE Student(    
 	ID   INT NOT NULL AUTO_INCREMENT,    
 	NAME VARCHAR(20) NOT NULL,    
 	AGE  INT NOT NULL,    
 	PRIMARY KEY (ID) 
);

      接下来,我们需要提供一个数据源给JdbcTemplate类,以获得数据库访问。配置数据源的示范配置文件如下:

 <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/TEST"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
 </bean>

      最后,就是调用JdbcTemplate的实例执行SQL语句。实例如下:
1. 查询一个整数:

String SQL = "select count(*) from Student";
int rowCount = jdbcTemplateObject.queryForInt( SQL );

2. 查询长整数:

 String SQL = "select count(*) from Student";
long rowCount = jdbcTemplateObject.queryForLong( SQL );

3. 使用绑定变量的简单查询【返回数字】:

String SQL = "select age from Student where id = ?";
int age = jdbcTemplateObject.queryForInt(SQL, new Object[]{10});

4. 使用绑定变量的简单查询【返回字符串】:

String SQL = "select name from Student where id = ?";
String name = jdbcTemplateObject.queryForObject(SQL, new Object[]{10}, String.class);

4. 使用绑定变量的简单查询【返回单个对象】:

public class StudentMapper implements RowMapper<Student> {    
 	public Student mapRow(ResultSet rs, int rowNum) throws SQLException {       
 		Student student = new Student();       
 			student.setID(rs.getInt("id"));       
 			student.setName(rs.getString("name"));       
 			student.setAge(rs.getInt("age"));       
 		return student;    
 	} 
}

String SQL = "select * from Student where id = ?";
Student student = jdbcTemplateObject.queryForObject(SQL,new Object[]{10}, new StudentMapper());  

5. 使用简单查询【返回多个对象】:

public class StudentMapper implements RowMapper<Student> {    
 	public Student mapRow(ResultSet rs, int rowNum) throws SQLException {       
 		Student student = new Student();       
 			student.setID(rs.getInt("id"));       
 			student.setName(rs.getString("name"));       
 			student.setAge(rs.getInt("age"));       
 		return student;    
 	} 
}

String SQL = "select * from Student";
List<Student> students = jdbcTemplateObject.query(SQL,new StudentMapper());

6. 插入一行到数据库表中:

 String SQL = "insert into Student (name, age) values (?, ?)";
 jdbcTemplateObject.update( SQL, new Object[]{"Zara", 11} );

7. 更新一行到数据库表中:

 String SQL = "update Student set name = ? where id = ?";
 jdbcTemplateObject.update( SQL, new Object[]{"Zara", 10} );

8. 从数据库表中删除行:

 String SQL = "delete Student where id = ?";
 jdbcTemplateObject.update( SQL, new Object[]{20} );

9. 使用JdbcTemplate的execute(…)方法来执行任何SQL语句或DDL语句
下面是一个示例,使用CREATE语句创建一个表:

String SQL = "CREATE TABLE Student( " 
	+    "ID   INT NOT NULL AUTO_INCREMENT, " 
	+    "NAME VARCHAR(20) NOT NULL, " 
	+    "AGE  INT NOT NULL, " 
	+    "PRIMARY KEY (ID));"  
jdbcTemplateObject.execute( SQL );

参考:

  1. https://mp.weixin.qq.com/s/L-7lak5yP0d8C4WO2R7wsg
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页