ToB企服应用市场:ToB评测及商务社交产业平台
标题:
手写 Hibernate ORM 框架 05-基本结果测试
[打印本页]
作者:
南飓风
时间:
2024-7-31 20:50
标题:
手写 Hibernate ORM 框架 05-基本结果测试
手写 Hibernate 系列
手写 Hibernate ORM 框架 00-hibernate 简介
手写 Hibernate ORM 框架 00-环境准备
手写 Hibernate ORM 框架 01-注解常量界说
手写 Hibernate ORM 框架 02-实体 Bean 界说,建表语句自动生成
手写 Hibernate ORM 框架 03-配置文件读取, 数据库毗连构建
手写 Hibernate ORM 框架 04-持久化实现
手写 Hibernate ORM 框架 05-整体结果测试验证
从零手写组件系列
java 从零手写 spring ioc 控制反转
java 从零手写 spring mvc
java 从零手写 jdbc-pool 数据库毗连池
java 从零手写 mybatis
java 从零手写 hibernate
java 从零手写 rpc 远程调用
java 从零手写 mq 消息组件
java 从零手写 cache 缓存
java 从零手写 nginx4j
java 从零手写 tomcat
简介
java 从零实现浅易版本的
hibernate
我们已经实现了 v0.1.0 版本,本节一起来验证一下结果。
核心特性
简单版本的 hibernate
建表语句生成+执行
插入语句生成+执行
快速开始
需要
jdk1.3+
maven 3.x+
maven 引入
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>hibernate</artifactId>
<version>0.1.0</version>
</dependency>
复制代码
入门测试
环境准备
首先准备一个 mysql 对应的测试库 hibernate
mysql> create database hibernate;
Query OK, 1 row affected (0.00 sec)
mysql> use hibernate;
Database changed
复制代码
配置信息
我们配置一下 hibernate.cfg.xml 为对应的数据库访问信息:
<?xml version='1.0' encoding='utf-8'?>
<hibernate-configuration>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
</hibernate-configuration>
复制代码
建表语句
SQL 的生成:
Table table = new Table();
User user = new User();
System.out.println(table.buildCreateTableSQL(user));
复制代码
结果为:
create table t_user (id BIGINT AUTO_INCREMENT, name VARCHAR(255), password VARCHAR(255), myAge INTEGER , createOn DATETIME, modifiedOn DATETIME , PRIMARY KEY (`id`) );
复制代码
执行建表
我们可以直接通过步伐建表
Session session = new Session();
Table table = new Table();
User user = new User();
Connection connection = session.createConnection();
PreparedStatement preparedStatement = connection.prepareStatement(table.buildCreateTableSQL(user));
preparedStatement.execute();
复制代码
执行后:
mysql> show tables;
+---------------------+
| Tables_in_hibernate |
+---------------------+
| t_user |
+---------------------+
1 row in set (0.00 sec)
复制代码
表布局
mysql> desc t_user;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| myAge | int(11) | YES | | NULL | |
| createOn | datetime | YES | | NULL | |
| modifiedOn | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)
复制代码
PS: 这里可以看到对应的字段没有驼峰转下划线
数据的插入
插入语句
User user = new User();
user.setId(3L);
user.setName("ryo");
user.setAge(21);
user.setPassword("123456");
user.setCreateOn(new Date());
user.setModifiedOn(new Date());
System.out.println(new Session().buildInsertSQL(user));
复制代码
结果为:
INSERT INTO t_user ( id,name,password,myAge,createOn,modifiedOn ) VALUES ( '3','ryo','123456','21','2024-07-30 00:37:36','2024-07-30 00:37:36' ) ;
复制代码
步伐插入
也可以步伐直接插入
User user = new User();
user.setId(3L);
user.setName("ryo");
user.setAge(21);
user.setPassword("123456");
user.setCreateOn(new Date());
user.setModifiedOn(new Date());
new Session().save(user);
复制代码
结果
mysql> select * from t_user;
+----+------+----------+-------+---------------------+---------------------+
| id | name | password | myAge | createOn | modifiedOn |
+----+------+----------+-------+---------------------+---------------------+
| 3 | ryo | 123456 | 21 | 2024-07-30 00:38:14 | 2024-07-30 00:38:14 |
+----+------+----------+-------+---------------------+---------------------+
1 row in set (0.00 sec)
复制代码
ROAD-MAP
添加基于 gen-case 的测试用例
建表对应的字段没有驼峰转下划线
CRUD
list 等常见查询
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4