Spring(JDBC Template)

Spring(JDBC Template)

JDBCTemplate

Spring提供的JdbcTemplate是一个小型持久化层框架,简化Jdbc代码。之前学的Mybatis是一个半自动化的ORM持久化层框架

JdbcTemplate使用步骤

pom.xml配置
<!--spring-jdbc∈spring-orm-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>5.3.1</version>
</dependency>
<!--导入druid的jar包-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
<!--导入mysql的jar包-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.37</version>
</dependency>

applicationContext.xml配置
  • 注意: url后面的serverTimZone=UTC必须要写!!!
#db.properties
#key=value
db.driverClassName=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/test_mybatis?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
db.username=root
db.password=root
<!--applicationContext.xml-->
<!--引入properties文件-->
<context:property-placeholder location="classpath:db.properties"/>
<!--装配DruidDataSource-->
<bean id="dateSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${db.driverClassName}"/>
    <property name="url" value="${db.url}"/>
    <property name="username" value="${db.username}"/>
    <property name="password" value="${db.password}"/>
</bean>
<!--装配JdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dateSource"/>
</bean>

JdbcTemplate的常用API

增删改
  • 语法: jdbcTemplate.update(String sql, Object... args)
  • 注意: 默认是自动提交事务
// 增(返回值是操作的行数)
String sql = "insert into tbl_dept(dept_name,dept_id) values(?, ?)";
jdbcTemplate.update(sql, "后勤部",2);

// 删
sql = "delete from tbl_dept where dept_id = ?";
jdbcTemplate.update(sql, 4);

// 改
sql = "update tbl_dept set dept_name = ? where dept_id=?";
jdbcTemplate.update(sql, "后勤部", 2);
批量 增删改
  • 语法: jdbcTemplate.batchUpdate(String sql,List<Object[]> args)
// 批量增删改 (批量插入员工信息)
sql = "insert into tbl_employee(last_name, email, salary) values (?,?,?)";
List<Object[]> employees = new ArrayList<>();
employees.add(new Object[]{"zhangSan", "123@ww.ecom", 23.3});
employees.add(new Object[]{"liSi", "13241@ww.ecom", 33.3});
employees.add(new Object[]{"wangWu", "423@ww.ecom", 383.3});

jdbcTemplate.batchUpdate(sql, employees);
查询单个数值
  • 语法: jdbcTemplate.queryForObject(String sql,Class clazz,Object... args)
// 查询单个数值(查询员工数量)
sql = "select count(*) from tbl_employee";
Integer employeeNum = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(employeeNum);
查询单个对象
  • 语法: jdbcTemplate.queryForObject(String sql,RowMapper<T> rm,Object... args)
// 查询单个对象(查询id为1的员工信息)
sql = "select id, last_name, email, salary from tbl_employee where id = ?";
// 创建RowMapper<T>
RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);
Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 1);
System.out.println(employee);
查询多个对象
  • 语法: jdbcTemplate.query(String sql,RowMapper<T> rm,Obejct... args)
// 查询多个对象(查询所有员工信息)
sql = "select * from tbl_employee";
RowMapper<Employee> rowMapper2 = new BeanPropertyRowMapper<>(Employee.class);
List<Employee> employeeList = jdbcTemplate.query(sql, rowMapper2);
employeeList.forEach(System.out::println);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值