目录
1.依赖导入
2.编写数据库连接信息 jdbc.properties
3.编写xml配置文件
4.基于jdbcTemplate的CRUD使用
5.基于jdbcTemplate的持久层编写示例
1.依赖导入
<dependencies>
<!-- 数据库驱动和连接池-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!-- spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
2.编写数据库连接信息 jdbc.properties
atguigu.url=jdbc:mysql://localhost:3306/数据库名
atguigu.driver=com.mysql.cj.jdbc.Driver
atguigu.username=root(自己的账号)
atguigu.password=root(自己的密码)
3.编写xml配置文件
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 导入外部属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置数据源 -->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${atguigu.url}"/>
<property name="driverClassName" value="${atguigu.driver}"/>
<property name="username" value="${atguigu.username}"/>
<property name="password" value="${atguigu.password}"/>
</bean>
<!-- 配置 JdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 装配数据源 -->
<property name="dataSource" ref="druidDataSource"/>
</bean>
</beans>
4.基于jdbcTemplate的CRUD使用
public class JdbcTemplateTest {
/**
* 使用jdbcTemplate进行DML动作
*/
@Test
public void testDML(){
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("spring-ioc.xml");
JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
//TODO 执行插入一条学员数据
String sql = "insert into students (id,name,gender,age,class) values (?,?,?,?,?);";
/*
参数1: sql语句
参数2: 可变参数,占位符的值
*/
int rows = jdbcTemplate.update(sql, 9,"十一", "男", 18, "二年三班");
System.out.println("rows = " + rows);
}
/**
* 查询单条实体对象
* public class Student {
* private Integer id;
* private String name;
* private String gender;
* private Integer age;
* private String classes;
*/
@Test
public void testDQLForPojo(){
String sql = "select id , name , age , gender , class as classes from students where id = ? ;";
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("spring-ioc.xml");
JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
//根据id查询
Student student = jdbcTemplate.queryForObject(sql, (rs, rowNum) -> {
//自己处理结果映射
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setAge(rs.getInt("age"));
stu.setGender(rs.getString("gender"));
stu.setClasses(rs.getString("classes"));
return stu;
}, 2);
System.out.println("student = " + student);
}
/**
* 查询实体类集合
*/
@Test
public void testDQLForListPojo(){
String sql = "select id , name , age , gender , class as classes from students ;";
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("spring-ioc.xml");
JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
/*
query可以返回集合!
BeanPropertyRowMapper就是封装好RowMapper的实现,要求属性名和列名相同即可
*/
List<Student> studentList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
System.out.println("studentList = " + studentList);
}
}
5.基于jdbcTemplate的持久层编写示例
//接口
public interface StudentDao {
/**
* 查询全部学生数据
* @return
*/
List<Student> queryAll();
}
//实现类
public class StudentDaoImpl implements StudentDao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
/**
* 查询全部学生数据
* @return
*/
@Override
public List<Student> queryAll() {
String sql = "select id , name , age , gender , class as classes from students ;";
/*
query可以返回集合!
BeanPropertyRowMapper就是封装好RowMapper的实现,要求属性名和列名相同即可
*/
List<Student> studentList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
return studentList;
}
}