前面写过一篇生成insert语句的博客,今天把CRUD的都完善了一下,需要的上次写的获取实体信息的类,这里就不贴出来了【点击打开查看】
下面是完整的代码:
package tan.code.utils;
import java.util.List;
import java.util.Map;
/**
* 简单的SQL语句拼装类 ;要求数据库表名及列命和实体保持一致;
*
* @author Mr_Tank_
*
* @param <T>
*/
public class SQLStringHelper<T> {
private EntityHelper entityHelper = new EntityHelper();
/**
* 根据传入的实体生成Insert SQL語句
*
* @param entity
* @return 拼接好的sql语句
*/
@SuppressWarnings("unchecked")
public String createInsert(T entity) {
String sql = "Insert into ";
String column = ""; // 列
String c_values = ""; // 列值
List<Map<String, Object>> list = entityHelper.getFiledsInfo(entity);
sql += list.get(0).get("obj_name").toString() + " ";
for (int i = 0; i < list.size(); i++) {
// 約定id在數據庫自動生成-20130807
if (String.valueOf(list.get(i).get("f_name")).equals("id")) {
i++;
} else if (list.get(i).get("f_value") != null) {
column += list.get(i).get("f_name") + ",";
c_values += "'" + list.get(i).get("f_value") + "',";
}
}
sql += "(" + column.substring(0, column.length() - 1) + ") values ("
+ c_values.substring(0, c_values.length() - 1) + ");";
return sql;
}
/**
* 拼裝Delete SQL語句
*
* @param entity
* @param id
* 实体id
* @return
*/
@SuppressWarnings("unchecked")
public String createDelete(T entity, int id) {
String sql = "delete from ";
List<Map<String, Object>> list = entityHelper.getFiledsInfo(entity);
sql += list.get(0).get("obj_name").toString() + " where id=" + id + ";";
return sql;
}
/**
* 查找
*
* @param entity
* @return
*/
@SuppressWarnings("unchecked")
public String createSelect(T entity) {
String sql = "select * from ";
String column = ""; // 列
List<Map<String, Object>> list = entityHelper.getFiledsInfo(entity);
sql += list.get(0).get("obj_name").toString() + " where ";
for (int i = 0; i < list.size(); i++) {
// 約定id在數據庫自動生成-20130807
// id計數不能從0開始
// 如果知道id直接根据id生成sql语句就可以了
if (String.valueOf(list.get(i).get("f_name")).equals("id")
&& !String.valueOf(list.get(i).get("f_value")).equals("0")) {
sql += "id=" + list.get(i).get("f_value");
return sql;
} else if (list.get(i).get("f_value") != null) {
column += list.get(i).get("f_name") + " like %"
+ list.get(i).get("f_value") + "% or ";
}
}
return sql += column.substring(0, column.length() - 4) + ";";
}
/**
* 根据id更新实体数据
*
* @param entity
* @param id
* 实体id
* @return 拼装好的 Update SQL语句
*/
@SuppressWarnings("unchecked")
public String createUpdate(T entity, int id) {
String sql = "update ";
String column = ""; // 列
List<Map<String, Object>> list = entityHelper.getFiledsInfo(entity);
sql += list.get(0).get("obj_name").toString() + " set ";
for (int i = 0; i < list.size(); i++) {
// id不能修改
if (String.valueOf(list.get(i).get("f_name")).equals("id")) {
i++;
} else if (list.get(i).get("f_value") != null) {
column += list.get(i).get("f_name") + "='"
+ list.get(i).get("f_value")+"',";
}
}
return sql +=column.substring(0, column.length()-1) + " where id='" + id+"'";
}
}
测试【其中可以使用任意实体类替代测试代码里面的的Tutor类】:
@Test
public void test() {
// fail("Not yet implemented");
Tutor tutor = new Tutor();
tutor.setId(3);
//tutor.setTitle("寻找一個初三物理長期家教");
tutor.setProvince("广西壮族自治区");
tutor.setCity("桂林");
tutor.setRegion("朝阳区");
//tutor.setPatriarch("王先生");
tutor.setPhone("139772109981");
tutor.setGrade("初三");
tutor.setSubject("物理");
tutor.setPay(50);
SQLStringHelper<Tutor> sqlStringHelper = new SQLStringHelper<Tutor>();
System.out.println(sqlStringHelper.createInsert(tutor));
System.out.println(sqlStringHelper.createDelete(tutor, 1));
System.out.println(sqlStringHelper.createSelect(tutor));
System.out.println(sqlStringHelper.createUpdate(tutor, 2));
}
测试结果:
Insert into Tutor (subject,grade,pay,phone,browse,province,city,region,wb_num) values ('物理','初三','50.0','139772109981','0','广西壮族自治区','桂林','朝阳区','0');
delete from Tutor where id=1;
select * from Tutor where id=3
update Tutor set subject='物理',grade='初三',pay='50.0',phone='139772109981',browse='0',province='广西壮族自治区',city='桂林',region='朝阳区',wb_num='0' where id='2'
以上只是本人的一些尝试,如有不足之处,请指出。
分享到:
相关推荐
在Java开发中,将Java实体类转换为MySQL数据库的建表语句是一项常见的任务,它有助于快速构建数据库模型,尤其在使用ORM(对象关系映射)框架如Hibernate、MyBatis时更为便捷。本篇文章将深入探讨这个过程,并提供...
Sqlbean是一款通过Java语法生成SQL语句的ORM插件,其理念是弱化在开发阶段对数据库的操作,无需先建表再开发,可直接编写实体类和业务代码,项目启动后自动创建表和维护表结构。内置大量常用方法,支持灵活的条件...
实体类和SQL生成工具是一种高效开发辅助工具,它能够帮助程序员快速地生成各种编程语言(如VB、C#、Java)中的实体类,并自动生成对应的SQL语句,极大地提高了开发效率,减少了手动编写代码的工作量。 实体类是面向...
给一个表名,自动生成java实体类,方便实用容易上手。前提,表中至少有一条数据。
Java实现的一个idea插件,用于实体转Mysql、oracle建表语句和json请求体的工具 使用 1、安装 下载发行版,打开idea:settings->plugins->intall plugin from disk 2、使用 打开实体类,右键选择ToMysql/ToOracle/To...
这个库允许开发者分析SQL语句的结构,提取出其中的关键元素,如列名、表名、别名以及查询条件,从而在Java应用程序中实现对SQL的深入理解和操作。以下是对JSQLPaser的一些详细解释和应用示例。 首先,JSQLPaser基于...
"Excel生成SQL语句和实体类代码生成器"就是一个这样的实用工具,它允许开发者通过Excel表格来快速构建数据库操作所需的SQL语句以及与之对应的Java实体类代码,大大减少了手动编写这些代码的时间。 这个工具的核心...
`SqlToBean.jar`可能是一个用于将MySQL的SQL脚本转换为Java实体类的工具。这样的工具可以自动解析SQL创建语句,生成相应的Java源代码,极大地提高了开发效率。通过输入SQL脚本或连接到数据库获取表结构,工具能够...
本篇将深入探讨如何在Hibernate中调用配置文件中的SQL语句,以此提高代码的可维护性和灵活性。 首先,理解Hibernate的核心概念至关重要。Hibernate是一个对象关系映射(ORM)框架,它将Java对象与关系数据库中的...
Java反射 JavaBean 对象自动生成插入、更新、删除、查询 SQL 语句操作 Java 反射是 Java 语言中一个强大的功能,它允许开发者在运行时检查和修改类、方法、字段的行为。Java 反射机制可以动态地创建对象、调用方法...
一款开源SQL语句转换成Java 实体类的小工具 需求起源 因为公司之前使用JPA,先写实体类再生产数据库建表语句,这样会有一个问题,数据建表语句都是没有注释的,对于新来的同事非常不友好,同时在开发中需要看字段...
5. **数据库迁移(Database Migration)**: 当需要在不同类型的数据库之间迁移时,如从SQL Server到Oracle,实体类可以作为一个中间桥梁。通过已有的实体类,我们可以根据Oracle数据库的特性调整映射,然后生成相应...
在SSM项目中,MyBatis的Mapper文件是关键组成部分,它定义了SQL语句和Java方法之间的映射关系。实体类则对应数据库中的表,用于存储和传递数据。而SQL语句则负责数据的查询、插入、更新和删除等操作。这个工具能够...
在实际项目中,文件`InterfaceAuthManageServiceImpl.java`可能包含了服务层的接口授权管理实现,它可能会使用到上述的多层嵌套循环、参数转换以及数据库操作。而`model_manage_response_group_config.sql`可能是...
实体类通常是对数据库表的面向对象表示,每个属性对应表的列,这样就能通过反射机制轻松地将Java对象转换为SQL语句。 在标签“实体类转sql”中,我们可以理解为通过Java的注解或者ORM(Object-Relational Mapping)...
这些工具可以从现有的数据库模式自动生成Java实体类,大大减少了编码的工作量。例如,当你连接到数据库后,可以选中表,生成对应的Java类,这些类通常包含了字段和getter/setter方法,对应数据库中的列。这种方式...
7. **运行脚本/工具**: 执行这个自动化过程,生成的Java实体类文件将被放置在指定的输出路径下,可以直接引入到Java项目中使用。 通过这样的自动化过程,开发者可以从繁琐的手动编码工作中解脱出来,专注于业务逻辑...
2. 实体类生成:根据解析得到的表结构信息,生成对应的Java实体类代码。实体类通常包含表中所有字段的成员变量、构造函数、getter和setter方法,以及可能的业务注解(如@Entity、@Table等)。 3. Mapper生成:根据...
它基于词法分析和语法分析的原理,将SQL语句转换为抽象语法树(AST),从而方便对SQL进行深度处理。通过这个模块,开发者可以轻松获取SQL的结构信息,例如表名、字段名、数据类型等,这对于自动化代码生成非常有帮助...
"Excel转sql"这个话题涉及到将Excel中的数据转换为SQL语句,以便于导入到数据库中创建相应的表结构或者更新已有数据。下面我们将详细探讨这个过程以及如何实现。 首先,Excel作为一种灵活的电子表格软件,广泛用于...