自己开发一个Java ORM框架(4)-数据库自动生成Java实体类

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文目录1. 导入jar包2. 编写配置文件3. 调用 panda.orm.database.EntityGenerater类的静态方法自动生成实体类代码文件

Panda ORM作为最懒ORM框架之一(低调!),提供了直接从数据库表自动生成java实体类的功能。本篇介绍使用方法,十分之简单舒畅,后续在测试完毕后将提供Panda ORM的全部源代码(包括数据库自动生成Java实体类和添加注解后自动增删改查两部分功能的源码)。


1. 导入jar包

需要导入两个,一个是pandaorm.jar,这个是Panda ORM的jar包,还有一个mysql-connector-java-5.1.39-bin.jar,是连接mysql数据库的驱动。如果是Web项目,直接放在WEB-INF/lib下即可。


2. 编写配置文件

需要在src目录下新建config.properties配置文件,并配置如下七个参数。


前四个参数用于连接数据库,table_schema表示要产生数据表对应实体的数据库名,entity_package_name表示生成实体的包名,file_save_path表示保存实体java类的目录,注意目录要用\转义!

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/pandaormtest?useUnicode=true&characterEncoding=utf-8
user=root
password=Pass1234
table_schema=pandaormtest
entity_package_name=panda.bank.entity
file_save_path=D:\\Java\\AutoEntity\\

3. 调用 panda.orm.database.EntityGenerater类的静态方法自动生成实体类代码文件

非常简单,新建一个Test类,代码如下:

public class Test {
  public static void main(String[] args) {
    panda.orm.database.EntityGenerater.generateClasses();
  }
}


运行之后,自动在file_save_path=D:\\Java\\AutoEntity\\目录下生成了两个java类文件user.java和role.java如下:数据库表结构如下图:

image.png

package panda.bank.entity;
/**
* Mon Mar 20 16:03:58 CST 2017
* Panda ORM自动生成: user 实体类
*/ 
public class User{
  private String userId;
  private String userPassword;
  private String userName;
  private String userRole;
  public String getUserId(){
    return userId;
  }
  public void setUserId(String userId){
    this.userId=userId;
  }
  public String getUserPassword(){
    return userPassword;
  }
  public void setUserPassword(String userPassword){
    this.userPassword=userPassword;
  }
  public String getUserName(){
    return userName;
  }
  public void setUserName(String userName){
    this.userName=userName;
  }
  public String getUserRole(){
    return userRole;
  }
  public void setUserRole(String userRole){
    this.userRole=userRole;
  }
}
package panda.bank.entity;
/**
* Mon Mar 20 16:03:58 CST 2017
* Panda ORM自动生成: role 实体类
*/ 
public class Role{
  private String roleName;
  private String roleId;
  public String getRoleName(){
    return roleName;
  }
  public void setRoleName(String roleName){
    this.roleName=roleName;
  }
  public String getRoleId(){
    return roleId;
  }
  public void setRoleId(String roleId){
    this.roleId=roleId;
  }
}

OK ,这样其实就解决了很大一部分的代码量。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 Java 容器
Java一分钟之-高级集合框架:LinkedList与TreeSet
【5月更文挑战第17天】这篇博客对比了Java集合框架中的LinkedList和TreeSet。LinkedList是双向链表,适合中间插入删除,但遍历效率低且占用空间大;TreeSet基于红黑树,保证元素有序且不重复,插入删除速度较LinkedList慢但查找快。选择时需根据操作需求和性能考虑。
12 2
|
4天前
|
Java 数据安全/隐私保护 Spring
Java 中 Spring Boot 框架下的 Email 开发
Java 中 Spring Boot 框架下的 Email 开发
81 2
|
2天前
|
安全 Java 容器
Java一分钟之-高级集合框架:并发集合(Collections.synchronizedXXX)
【5月更文挑战第18天】Java集合框架的`Collections.synchronizedXXX`方法可将普通集合转为线程安全,但使用时需注意常见问题和易错点。错误的同步范围(仅同步单个操作而非迭代)可能导致并发修改异常;错误地同步整个集合类可能引起死锁;并发遍历和修改集合需使用`Iterator`避免`ConcurrentModificationException`。示例代码展示了正确使用同步集合的方法。在复杂并发场景下,推荐使用`java.util.concurrent`包中的并发集合以提高性能。
12 3
|
2天前
|
Java 开发者
Java一分钟之-高级集合框架:优先队列(PriorityQueue)
【5月更文挑战第18天】`PriorityQueue`是Java集合框架中的无界优先队列,基于堆数据结构实现,保证队头元素总是最小。常见操作包括`add(E e)`、`offer(E e)`、`poll()`和`peek()`。元素排序遵循自然排序或自定义`Comparator`。常见问题包括错误的排序逻辑、可变对象排序属性修改和混淆`poll()`与`peek()`。示例展示了自然排序和使用`Comparator`的排序方式。正确理解和使用`PriorityQueue`能提升应用性能。
21 6
|
2天前
|
存储 Java
Java一分钟之-高级集合框架:Queue与Deque接口
【5月更文挑战第18天】本文探讨Java集合框架中的`Queue`和`Deque`接口,两者都是元素序列的数据结构。`Queue`遵循FIFO原则,主要操作有`add/remove/element/peek`,空队列操作会抛出`NoSuchElementException`。`Deque`扩展`Queue`,支持首尾插入删除,同样需注意空`Deque`操作。理解并正确使用这两个接口,结合具体需求选择合适数据结构,能提升代码效率和可维护性。
17 4
|
3天前
|
存储 算法 Java
Java 集合框架
5月更文挑战第10天
|
4天前
|
SQL 缓存 Java
Java一分钟之-Hibernate:ORM框架实践
【5月更文挑战第15天】Hibernate是Java的ORM框架,简化数据库操作。本文列举并解决了一些常见问题: 1. 配置SessionFactory,检查数据库连接和JDBC驱动。 2. 实体类需标记主键,属性映射应匹配数据库列。 3. 使用事务管理Session,记得关闭。 4. CRUD操作时注意对象状态和查询结果转换。 5. 使用正确HQL语法,防止SQL注入。 6. 根据需求配置缓存。 7. 懒加载需在事务内处理,避免`LazyInitializationException`。理解和避免这些问题能提升开发效率。
19 0
|
4天前
|
XML Java 数据库连接
Java一分钟之MyBatis:持久层框架基础
【5月更文挑战第15天】MyBatis是Java的轻量级持久层框架,它分离SQL和Java代码,提供灵活的数据库操作。常见问题包括:XML配置文件未加载、忘记关闭SqlSession、接口方法与XML映射不一致、占位符使用错误、未配置ResultMap和事务管理不当。解决这些问题的关键在于正确配置映射文件、管理SqlSession、避免SQL注入、定义ResultMap以及确保事务边界。遵循最佳实践可优化MyBatis使用体验。
13 2
Java一分钟之MyBatis:持久层框架基础
|
4天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
13 1
|
4天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
8 0
http://www.vxiaotou.com