記事のディレクトリ
1依存関係を追加します
JdbcTemplateは、SpringフレームワークによるJDBCのカプセル化であるJDBCテンプレートでもあり、その目的は、データベースへのアクセス操作を簡素化することです。JdbcTemplateはSpringの一部です。JdbcTemplateは、いくつかのメソッドをカプセル化するだけでなく、リソースの作成と解放も処理します。彼は、Statementの確立や実行などのコアJDBCワークフローを実行しており、SQLステートメントや結果の抽出などの少量の作業を提供するだけで済みます。
以下は、pom.xmlに追加する必要のある依存関係です。
<!--Spring相关 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!--日志-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- 数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
<!-- 单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
2JDBC構成ファイル
JDBC.propertiesファイルを提供して、JDBCプロパティの変更を容易にすることができます
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
jdbc.userName=root
jdbc.password=
3Spring構成ファイル
2つの構成ファイルがあります。1つはデータベース接続プールの構成に使用され、もう1つはSpring構成に使用されます。
データベース接続プール構成ファイル
package com.lrm.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
import java.beans.PropertyVetoException;
/**
* @author RuiMing Lin
* @date 2021-03-10 20:58
* @description
*/
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean(name="dataSource")
public DruidDataSource getDataSource() throws PropertyVetoException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
Spring構成ファイル
package com.lrm.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* @author RuiMing Lin
* @date 2021-03-10 21:00
* @description
*/
@Configuration
@ComponentScan(basePackages = {
"com.lrm"})
@Import({
DataSourceConfiguration.class})
public class SpringConfig {
@Bean("jdbcTemplate")
public JdbcTemplate getJdbcTemplate(DruidDataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
}
4ダオ
このクラスは、JdbcTemplateを挿入することにより、データベースの追加、削除、チェック、および変更を実現します。
package com.lrm.dao;
import com.lrm.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository(value = "userDaoImpl")
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(User user) {
System.out.println("dao add...");
String sql = "insert into t_user values(?,?)";
int update = jdbcTemplate.update(sql, user.getUsername(), user.getAge());
System.out.println("update = " + update);
}
@Override
public void update(User user) {
System.out.println("dao update...");
String sql = "update t_user set age=? where username=?";
int update = jdbcTemplate.update(sql, user.getAge(), user.getUsername());
System.out.println("update = " + update);
}
@Override
public void delete(User user) {
System.out.println("dao delete...");
String sql = "delete from t_user where username=?";
int update = jdbcTemplate.update(sql, user.getUsername());
System.out.println("update = " + update);
}
@Override
public int findCount() {
System.out.println("dao findCount...");
String sql = "select count(*) from t_user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
@Override
public User findOne(String username) {
System.out.println("dao findOne...");
String sql = "select * from t_user where username=? limit 1";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);
return user;
}
@Override
public List<User> findAll() {
System.out.println("dao findAll...");
String sql = "select * from t_user";
List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
return users;
}
}
5サービス
package com.lrm.service;
import com.lrm.dao.UserDao;
import com.lrm.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired //根据类型进行注入
@Qualifier(value = "userDaoImpl") //根据名称进行注入
private UserDao userDao;
public void addUser(User user) {
System.out.println("service add...");
userDao.add(user);
}
public void updateUser(User user) {
System.out.println("service update...");
userDao.update(user);
}
public void deleteUser(User user) {
System.out.println("service delete...");
userDao.delete(user);
}
public int findCount() {
System.out.println("service findCount...");
int count = userDao.findCount();
return count;
}
public User findOne(String username){
System.out.println("service findOne...");
return userDao.findOne(username);
}
public List<User> findAll(){
System.out.println("service findAll...");
return userDao.findAll();
}
}
6コントローラー
package com.lrm.controller;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.lrm.config.SpringConfig;
import com.lrm.domain.User;
import com.lrm.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import java.sql.SQLException;
import java.util.List;
/**
* @author RuiMing Lin
* @date 2021-03-10 21:02
* @description
*/
@Controller
public class UserController {
/**
* 测试数据库连接是否成功
* @throws SQLException
*/
@Test
public void test1() throws SQLException {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
DruidDataSource dataSource = applicationContext.getBean("dataSource", DruidDataSource.class);
DruidPooledConnection connection = dataSource.getConnection();
System.out.println(connection);
}
/**
* 测试jdbctemplate是否创建成功
* @throws SQLException
*/
@Test
public void test2() throws SQLException {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
JdbcTemplate jdbcTemplate = applicationContext.getBean("jdbcTemplate", JdbcTemplate.class);
System.out.println(jdbcTemplate);
}
/**
* 增
*/
@Test
public void test3(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
userService.addUser(new User("小红",25));
}
/**
* 更新
*/
@Test
public void test4(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
userService.updateUser(new User("小红",24));
}
/**
* 删除
*/
@Test
public void test5(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
userService.deleteUser(new User("小红",24));
}
/**
* 查询记录数
*/
@Test
public void test6(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
int count = userService.findCount();
System.out.println("count = " + count);
}
/**
* 查询一个对象
*/
@Test
public void test7(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
User user = userService.findOne("小明");
System.out.println("user = " + user);
}
/**
* 查询所有对象
*/
@Test
public void test8(){
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = applicationContext.getBean("userService", UserService.class);
List<User> users = userService.findAll();
System.out.println("users = " + users);
}
}