Spring JdbcTemplate基本使用
阿新 • • 發佈:2021-09-28
JDBTemplate是 Spring框架中提供的—個模板物件,是對原始繁瑣 JDBC API物件的簡單封裝。
核心物件
匯入依賴座標
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.10</version> </dependency> <!-- jdbcTemplate 注意要和spring版本一致 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.10</version> </dependency> <!-- 事務相關 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.3.10</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <!-- 連線池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency> <!-- aspect織入(切點表示式需要用到該jar包) --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.7</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
建立 Dao 和 Service 層
實體類
package com.orginly.domain; public class User { private Integer id; private String name; private Integer age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
Dao
// 介面 public interface UserDao { public List<User> findAll(); public User find(int id); public void updateUser(User user); } // 實現類 @Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; /** * 使用者列表 */ @Override public List<User> findAll() { String sql = "select * from user"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class)); } /** * 查詢一條使用者資訊 * @param id */ @Override public User find(int id) { String sql = "select * from user where id = ?"; return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), id); } /** * 更新使用者資訊 */ @Override public void updateUser(User user) { String sql = "update user set name = ?,age = ? where id = ?"; jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId()); } }
Service
// 介面
public interface UserService {
public void findALl();
public void updateUser();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public void findALl() {
List<User> users = userDao.findAll();
System.out.println(users.toString());
}
@Override
public void updateUser() {
User user = userDao.find(2);
user.setName("li1");
userDao.updateUser(user);
System.out.println(user);
}
}
整合 JdbcTemplate 至 Spring
- 新建
jdbc.properties
配置檔案
jdbc.driverClassName = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost/demo?characterEncoding=UTF-8
jdbc.username = root
jdbc.password = 000
- 配置 JdbcTemplate 資料來源 並將物件建立權交給 IOC 容器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 開啟 IOC 註解掃描 -->
<context:component-scan base-package="com.orginly"/>
<!-- 引入 properties 檔案 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置資料來源 -->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 繫結資料來源 -->
<property name="dataSource" ref="datasource"/>
</bean>
</beans>
整合 Junit4 單元測試
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest {
@Autowired
private UserService userService;
@Test
public void test() {
userService.findALl();
}
}