要操作的数据库:
1.使用JDBCTemplate首先需要导入数据库连接池的jar包和驱动jar包:
2.在配置文件中配置数据源
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="root"/>
<property name="password" value="123"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/jdbc_template"/>
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
</bean>
<!--Spring提供了一个类JDBCTemplate,用它来操作数据库-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>
3.导入操作数据库模块所需要的包:
4.将emp_id=5的记录的salary字段更新为1300
@Test
public void test2() throws SQLException {
String sql="update employee set salary=? where emp_id=?";
int update = jdbcTemplate.update(sql, 1300, 5);
System.out.println("更新员工:"+update);
}
5.批量插入
//批量插入
@Test
public void test3() throws SQLException {
String sql = "insert into employee(emp_name,salary) values(?,?)";
List<Object[]> batchArgs = new ArrayList<Object[]>();
batchArgs.add(new Object[]{"张三",1998});
batchArgs.add(new Object[]{"李四",1234});
batchArgs.add(new Object[]{"王五",1234});
batchArgs.add(new Object[]{"赵六",1234});
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
}
6.查询emp_id=5的数据记录,并封装为java对象返回
首先要写一个实体类:以便封装javaBean对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
private Integer empId;
private String empName;
private Double salary;
}
javaBean需要和数据库中字段名一致,否则无法封装对象,因此在写sql语句时需要对数据库中的字段重命名。
使用BeanPropertyRowMapper()
方法将查询的记录封装为对象
//javaBean需要和数据库中字段名一致,否则无法封装对象
@Test
public void test4() throws SQLException {
String sql = "select emp_id empid ,emp_name empName,salary " +
"from employee where emp_id=?";
Employee employee =
jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Employee>(Employee.class), 5);
System.out.println(employee);
}
7.查询salary>4000的数据记录,并将其封装为一个List集合
@Test
public void test5() throws SQLException {
String sql = "select emp_id empid ,emp_name empName,salary " +
"from employee where salary>?";
List<Employee> query =
jdbcTemplate.query(sql, new BeanPropertyRowMapper<Employee>(Employee.class), 4000);
}
8.查询最大的salary
无论是返回单个对象还是单个数据都是用方法queryForObject
@Test
public void test6() throws SQLException {
String sql = "select max(salary) from employee";
jdbcTemplate.queryForObject(sql,Double.class);
}