简介
- 本文将在 Spring 框架中,分别使用使用“XML”,“XML+注解”和“注解”三种方式来实现数据库的CRUD操作。实现数据库的CRUD操作的功能属于另外一部分的知识点,三种方式的不同点主要在于如何注入依赖。
- 基于xml配置文件
- 依赖注入:xml配置文件
- 开启注解扫描:xml配置文件
- 基于xml配置文件和注解
- 依赖注入:注解
- 开启注解扫描:注解、xml配置文件
- 基于注解
- 依赖注入:注解
- 开启注解扫描:Java配置文件
- 基于xml配置文件
项目环境
数据库代码
- 创建数据库spring,在数据库中创建 Account表。
1 | # 创建数据库 |
Maven依赖
1 | <dependencies> |
基于xml配置文件
- 此部分分为三部分
- 目录结构:帮助了解整个项目的基本结构,以及完整详细的代码。
- 依赖注入:此部分是本文着重比较的地方,单独分为一部分。
- CURD操作:与Spring框架的核心内容关系不大,可作为延展内容。
目录结构
- src
- main
- java
- domain
- Account.java(实体类)
- service
- AccountService.java(业务层接口)
- AccountServiceImp.java(业务层实现类)
- dao
- AccountDao.java(持久层接口)
- AccountDaoImp.java(持久层实习类)
- domain
- resources
- Beans.xml(Spring配置文件)
- java
- test
- SpringTest.java(测试类)
- main
实体类
- 实体类根据数据库表中的字段来设置成员变量。
Account.java
1 | package xml.domain; |
业务层
- 由于此案例是为了演示操作数据库的CRUD方法,所以业务层并没有实现具体功能,而只是注入了持久层接口,调用了持久层方法。
AccountService.java
1 | package xml.service; |
AccountServiceImp.java
1 | package xml.service; |
持久层
AccountDao.java
1 | package xml.dao; |
AccountDaoImp.java
1 | package xml.dao; |
配置文件
Beans.xml
1 |
|
测试类
SpringTest.java
1 | package test.xml; |
依赖注入
基于xml的方式
- ServiceImp
- Dao(设值函数)
- DaoImp
- QueryRunner(设值函数)
- QueryRunner
- DataSource(构造函数)
1 | <!-- DataSource --> |
CRUD操作
查询所有用户
持久层接口
1 | List<Account> findAll(); |
持久层实现类
1 | public List<Account> findAll() { |
根据ID查询用户
持久层接口
1 | Account findByID(int id); |
持久层实现类
1 | public Account findByID(int id) { |
添加用户
持久层接口
1 | void add(Account account); |
持久层实现类
1 | public void add(Account account) { |
修改用户
持久层接口
1 | void update(Account account); |
持久层实现类
1 | public void update(Account account) { |
删除用户
持久层接口
1 | void delete(int id); |
持久层实现类
1 | public void delete(int id) { |
基于xml配置文件和注解
此部分分为两部分
- 目录结构:帮助了解整个项目的基本结构、如果想要阅读项目完整详细的代码,请阅读“基于xml配置文件”内容。此部分仅展示在“基于xml配置文件”基础上更新的详细代码。
- 依赖注入:此部分是本文着重比较的地方,单独分为一部分。
目录结构
- src
- main
- java
- domain
- Account.java(实体类)
- service
- AccountService.java(业务层接口)
- AccountServiceImp.java(业务层实现类)
- dao
- AccountDao.java(持久层接口)
- AccountDaoImp.java(持久层实习类)
- domain
- resources
- Beans.xml(Spring配置文件)
- java
- test
- SpringTest.java(测试类)
- main
业务层 实现类
AccountServiceImp.java
1 | package xml_anno.service; |
持久层 实现类
AccountDaoImp.java
1 | package xml_anno.dao; |
配置文件
Beans.xml
1 |
|
测试类
SpringTest.java
1 | package test.xml_anno; |
依赖注入
基于注解的方式
- ServiceImp
- Dao(设值函数)
- DaoImp
- QueryRunner(设值函数)
ServiceImp
1 | "serviceImp") ( |
DaoImp
1 | "daoImp") ( |
基于xml的方式
开启注解支持
QueryRunner
- DataSource(构造函数)
1 | <!-- 开启注解扫描 --> |
基于注解
- 目录结构:帮助了解整个项目的基本结构、如果想要阅读项目完整详细的代码,请阅读“基于xml配置文件”内容。此部分仅展示在“基于xml配置文件和注解”基础上更新的详细代码。
- 依赖注入:此部分是本文着重比较的地方,单独分为一部分。
目录结构
- src
- main
- java
- config
- SpringConfiguration.java(Java配置文件)
- domain
- Account.java(实体类)
- service
- AccountService.java(业务层接口)
- AccountServiceImp.java(业务层实现类)
- dao
- AccountDao.java(持久层接口)
- AccountDaoImp.java(持久层实习类)
- config
- resources
- jdbcConfiguration.properties(数据库连接参数)
- java
- test
- SpringTest.java(测试类)
- main
Java配置文件
1 | package java_anno.config; |
数据库连接文件
1 | jdbc.driver=com.mysql.jdbc.Driver |
依赖注入
基于注解
- ServiceImp
- Dao(设值函数)
- DaoImp
- QueryRunner(设值函数)
- QueryRunner
- DataSource(构造函数)
ServiceImp
1 | "serviceImp") ( |
DaoImp
1 | "daoImp") ( |
QueryRunner
1 | /* 定义容器 */ |
DataSource
1 | /** 数据库连接参数 */ |