文章目录
- 准备数据
- `pom.xml`文件中引用需要的库
- 准备好dao层接口和service层接口和实现类
- [准备好 `jdbc.properties` 和 `user.properties`](#准备好
jdbc.properties
和user.properties
) - 编写Druid的jdbcConfig配置类
- 编写spring的配置类`SpringConfig`
- 编写Dao层的实现类的逻辑
- 测试类
- 参考文献
准备数据
sql
create database if not exists db_spring;
use db_spring;
drop table if exists tb_user;
create table if not exists tb_user
(
id int primary key auto_increment,
name varchar(10) not null unique,
age int,
id_card varchar(10)
);
insert into tb_user(name, age, id_card)
values ('张三', 23, '10001'),
('李四', 18, '10002'),
('王五', 34, '10003'),
('赵六', 45, '10004');
select * from tb_user;
pom.xml
文件中引用需要的库
xml
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
准备好dao层接口和service层接口和实现类
-
dao层
java// 接口 package com.test.dao; public interface UserDao { void selectAll(); void selectById(); }
-
service层
java// 接口 package com.test.service; public interface UserService { void selectAll(); void selectById(); } // 实现类 package com.test.service.impl; import com.test.dao.UserDao; import com.test.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Service注解就是标识这个类是service层的bean,spring启动的时候,就会把它放入到Ioc容器中 * 跟这个相似还有 @Repository 和 @Controller */ @Service public class UserServiceImpl implements UserService { // Autowired注解是自动装配 @Autowired private UserDao userDao; @Override public void selectAll() { userDao.selectAll(); } @Override public void selectById() { userDao.selectById(); } }
准备好 jdbc.properties
和 user.properties
这里分开写,是为了练习加载多个配置文件,所以需要再
resources
资源文件中新建这两个配置文件
-
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql:///db_spring?useServerPrepStmts=true jdbc.username=root jdbc.password=root1234
-
user.properties
name=张三 age=23 sex=男 idCard=10001 id=2
编写Druid的jdbcConfig配置类
java
public class JdbcConfig {
/**
* 这里通过Value注解从properties配置文件中读取数据
* 这里的前提,就是在 SpringConfig这个配置类中
* 通过PropertySource注解引用的资源文件中的配置文件
*/
@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来加载第三方
*/
@Bean
public DataSource dataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
}
编写spring的配置类SpringConfig
java
package com.test.config;
import org.springframework.context.annotation.*;
/**
* Configuration注解:设置当前类为配置类
* ComponentScan注解:用于扫描指定路径重点bean对象
* PropertySource注解:用于把指定的配置文件加载借来
* Import注解:是用于导入三方的bean类进入Ioc容器
*/
@Configuration
@ComponentScan({"com.test.dao", "com.test.service"})
@PropertySource({"classpath:user.properties", "classpath:jdbc.properties"})
@Import(JdbcConfig.class)
public class SpringConfig {
}
编写Dao层的实现类的逻辑
java
// Repository:表示是dao层的bean
@Repository("userDao")
public class UserDaoImpl implements UserDao {
// 自动装配
@Autowired
private DataSource dataSource;
// 获取配置文件中的数据
@Value("${id}")
private int id;
@Override
public void selectAll() {
try {
// 操作数据库
Connection connection = dataSource.getConnection();
String sql = "select * from tb_user";
PreparedStatement prepareStatement = connection.prepareStatement(sql);
ResultSet resultSet = prepareStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String idCard = resultSet.getString("id_card");
int age = resultSet.getInt("age");
System.out.println("id:" + id + " , name:" + name + " , age:" + age + " , idCard:" + idCard);
}
// 释放资源
resultSet.close();
prepareStatement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void selectById() {
try {
Connection connection = dataSource.getConnection();
String sql = "select * from tb_user where id = ?";
PreparedStatement prepareStatement = connection.prepareStatement(sql);
prepareStatement.setInt(1, id);
ResultSet resultSet = prepareStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String idCard = resultSet.getString("id_card");
int age = resultSet.getInt("age");
System.out.println("id:" + id + " , name:" + name + " , age:" + age + " , idCard:" + idCard);
}
// 释放资源
resultSet.close();
prepareStatement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
测试类
java
public class Main {
public static void main(String[] args) {
/**
* 获取Ioc容器
* 这里是通过SpringConfig这个配置类来获取
*/
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
// 获取bean
UserService userService = ctx.getBean(UserService.class);
userService.selectAll();
System.out.println("====== selectById ======");
userService.selectById();
}
}