Spring | JDBC

一、JdbcTemplate介绍

JdbcTemplate 是 Spring JDBC 框架的核心,JDBC 模板的设计目的是为了不同类型的 JDBC 操作提供模板方法

二、导入的架包

  • mchange-commons-java-0.2.11.jar
  • c3p0-0.9.5.2.jar
  • commons-logging-1.2.jar
  • mysql-connector-java-5.1.42-bin.jar
  • spring-aop-5.0.7.RELEASE.jar
  • spring-beans-5.0.7.RELEASE.jar
  • spring-context-5.0.7.RELEASE.jar
  • spring-core-5.0.7.RELEASE.jar
  • spring-expression-5.0.7.RELEASE.jar
  • spring-jdbc-5.0.7.RELEASE.jar
  • spring-orm-5.0.7.RELEASE.jar
  • spring-tx-5.0.7.RELEASE.jar
  • spring-web-5.0.7.RELEASE.jar
  • spring-webmvc-5.0.7.RELEASE.jar

三、配置c3p0数据源

db.properties:数据库的配置参数,以键值对的形式存放

jdbc.user=root
jdbc.password=lwh011305
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/spring4?useSSL=true

jdbc.initialPoolSize=5
jdbc.maxPoolSize=10

applicationContext.xml:数据库配置文件,导入 db.properties 文件的参数






    
    
    
    

    
    

然后需要配置 Spring 的 JdbcTemplate


        


四、使用JdbcTemplate实现对数据的增、删、改、查操作

1. 实例化IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    
JdbcTemplate jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");


2. 执行操作
2.1 增、删、改

使用 update(String sql, Object... args) 方法

String sql = "UPDATE employees SET last_name = ? WHERE id = ?";
jdbcTemplate.update(sql, "Peter2", 6);


2.2 批量更新:增、删、改

使用方法 batchUpdate(String sql, List batchArgs)

String sql = "INSERT INTO employees(last_name, email, dept_id) VALUES(?,?,?)";
        
//在集合中放入数组
List batchArgs = new ArrayList<>();
    
batchArgs.add(new Object[] {"luwenhe", "[email protected]", 3});
batchArgs.add(new Object[] {"lukaijie", "[email protected]", 4});
        
jdbcTemplate.batchUpdate(sql, batchArgs);


2.3 从数据库中获取一条记录,即对象

使用 queryForObject(String sql, RowMapper rowMapper, Object... args)

  1. 其中的 RowMapper 指定如何去映射结果集的行, 常用的实现类为 BeanPropertyRowMapper
  2. 使用 SQL 中的列的别名完成列名和类的属性名的映射, 如 last_name lastName
  3. 不支持级联属性. JdbcTemplate 到底是一个 JDBC 的小工具, 而不是 ORM 框架

PS:不是调用 queryForObject(String sql, Class requiredType, Object... args) 方法

String sql = "SELECT id, last_name lastName, email FROM employees WHERE id = ?";
RowMapper rowMapper = new BeanPropertyRowMapper<>(Employee.class);
Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 5);
System.out.println(employee);


2.4 从数据库中获取集合

使用 query(String sql, RowMapper rowMapper, Object... args)

String sql = "SELECT id, last_name lastName, email FROM employees WHERE id > ?";
RowMapper rowMapper = new BeanPropertyRowMapper<>(Employee.class);
List employees = jdbcTemplate.query(sql, rowMapper, 2);
System.out.println(employees);

PS:主要不是调用 queryForList() 方法

2.5 获取单个列的值

使用 queryForObject(String sql, Class requiredType)

String sql = "SELECT count(id) FROM employees";
long count = jdbcTemplate.queryForObject(sql, Long.class);
System.out.println(count);

你可能感兴趣的:(Spring | JDBC)