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
文件中引用需要的库<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>6.0.12version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.10version>
dependency>
<dependency>
<groupId>com.mysqlgroupId>
<artifactId>mysql-connector-jartifactId>
<version>8.0.33version>
dependency>
dependencies>
// 接口
package com.test.dao;
public interface UserDao {
void selectAll();
void selectById();
}
// 接口
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.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///db_spring?useServerPrepStmts=true
jdbc.username=root
jdbc.password=root1234
name=张三
age=23
sex=男
idCard=10001
id=2
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;
}
}
SpringConfig
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 {
}
// 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();
}
}
}
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();
}
}
1. 黑马程序员SSM框架教程