目录
[1、 什么是ORM](#1、 什么是ORM)
[2、 实体类](#2、 实体类)
[3、 ORM改造登录案例](#3、 ORM改造登录案例)
ORM【重要】
1、 什么是ORM
目前使用JDBC完成了CRUD,但是现在是进行CRUD,增删改方法要设计很多参数,查询的方法需要设计集合才能返回.
在实际开发中,我们需要将零散的数据封装到对象处理.
ORM (Object Relational Mapping) 对象关系映射是指
数据库表
与Java的实体类
有关系,可以进行映射
数据库表 --> Java的类
- tb_user ---> User.java
字段 --> 类的属性
id int --> private int id;
username varchar --> private String username;
...
一行数据 --> 类的对象
一行数据内每个列的值 --> 对象的属性值
2、 实体类
实体类: 数据表中零散数据的载体,用来封装数据.
表名 设计 类名
将列名设计成属性名
id --> id
create_time --> createTime (下划线转驼峰)
将列的数据类型设计成属性的数据类型
给类提供对应set get
一般项目中一个表就会对应一个实体类,所有的实体类都会放在model/entity/pojo/javabeen包结构中
将来写项目,数据库设计完,搭建完项目,第一件事件就是
根据表结构,创建实体类
java
public class User { // 实体类,是表名
// 属性是字段名
private int id;
private String username;
private String password;
private String phone;
private Date createTime;
private double money;
private int sex;
// setter getter...
}
3、 ORM改造登录案例
需求变更: 登录,如果成功,返回该用户所有信息
java
public class Demo5_login_orm {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:" );
String username = scanner.nextLine( );
System.out.println("请输入密 码:" );
String password = scanner.nextLine( );
User user = login(username, password);
if (user != null) {
System.out.println("登录成功,信息如下" );
System.out.println(user );
} else {
System.out.println("登录失败,用户名或密码错误!" );
}
}
// 需求变更: 登录,如果成功,返回该用户所有信息
// 数据信息使用User对象封装
public static User login(String username, String password) {
Connection conn = null;
Statement s = null;
ResultSet rs = null;
try {
// 1加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2获得连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java2403?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimeZone=UTC",
"root", "123456");
// 3获得执行语句对象
s = conn.createStatement( );
String sql = "select * from tb_user where username = '"+username+"' and password = '"+password+"'";
System.out.println("拼接后的sql: " + sql );
// 4执行sql
rs = s.executeQuery(sql);
if (rs.next()) {// 登录成功,从结果集取出数据
int id = rs.getInt("id");
String uname = rs.getString("username");
String pwd = rs.getString("password");
String phone = rs.getString("phone");
Date createTime = rs.getDate("create_time");
double money = rs.getDouble("money");
int sex = rs.getInt("sex");
User user = new User(id,uname,pwd,phone,createTime,money,sex);
return user;
}
} catch (Exception e) {
e.printStackTrace( );
} finally {
// 5关流
try {
rs.close();
s.close( );
conn.close( );
} catch (SQLException e) {
e.printStackTrace( );
}
}
return null;
}
}