一 ORM思想
ORM(Object-Relational-Mapping)在对象模型和关系型模型之间做一个映射(转换)
二 实体Entiry编程
1.设计思想
数据库 | java | |
---|---|---|
表 | 类 | |
行 | 对象 | |
字段(列) | 属性 |
2.实体Entity编程
(1)编码规范
-
① 通常一张表对应一个实体,命名规范:表名
t_person
,实体类名Person
-
② 实体类必须实现
Serializable
-
③ 表中的一个字段,对应实体的一个属性。实体属性必须使用包装类型。封装并提供set和get方法。
-
④ 必须手动提供无参构造方法(必须),如果需要也可以提供有参构造方法(非必要)
-
⑤ 代码要放在
entity
包下
(2)示例
- MySQL库表
create table t_account(
account_id int primary key auto_increment,
account_name varchar(20) not null unique,
account_password varchar(20) not null,
balance decimal(10,1)
)
- 实体类
package com.xx.entity;
import java.io.Serializable;
/**
* 映射t_account表
*/
public class Account implements Serializable {
private Integer accountId;
private String accountName;
private String accountPassword;
private Double balance;
//省略getter、setter、无参构造、有参构造(都得写)
}
补充:事实上JdbcTemplate的RowMapper的结果集映射对象,就是ORM思想的应用
三 DAO设计模式
1 场景
问题分析
在实际开发中,针对一张表的复杂业务功能通常需要和表交互多次(比如转账)。如果每次针对表的简单操作我们都写一遍,代码中会出现大量的代码冗余。
解决思路
将重复的SQL操作提炼至方法中,达到一条SQL操作多次复用的目的。
2 DAO编程
核心思想
DAO模式目的就是将SQL语句转化为通用SQL语句,并封装成Java方法、提高代码复用性。
编码规范
-
① 一张表的操作对应一个DAO
-
② 一个通用的SQL封装成一个方法,方法名和对应sql关键词一致,且望文生义
操作 Java 数据库 新增 insertXxx(Xxx x) insert into ... 删除 deleteXxxxxId(Integer id) delete from ... 更新 updateXxx(Xxx x) update t_xxx set ... 查询单个 Xxx selectXxxxxId(Integer id) select * from ... 查询多个 List<Xxx> selectXxxs() select * from ... -
③ 具体实现采用dao接口+impl实现类的形式(目的为提升代码扩展性和维护性)
-
① 接口中做方法声明的约束
-
②实现类中利用JDBCTemplate做具体实现
-
③ 接口命名:对应实体类名+Dao,例如表
t_person
,DAO命名为PersonDAO
-
④ 实现类名:接口名+Impl,如
PersonDAOImpl
-
⑤ 接口存放在
dao
包下 -
⑥ 实现类需要存放在
dao.impl
包下
-