package util;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
*/
/**
* @author Gaojingbo
*华为昆明数字经济学院-JAVA课程-高靖博 @Copy
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class Mybatis {
/**
* 域文件内容
* @param className
* @param list
* @param domainPackage
* @return
* @throws Exception
*/
public static String getDomainFile(String className, String table, List<Map> list, String domainPackage)throws Exception {
StringBuffer sbFile = new StringBuffer();
StringBuffer sbImport = new StringBuffer();
StringBuffer sbPerp = new StringBuffer();
StringBuffer sbGet = new StringBuffer();
StringBuffer sbSet = new StringBuffer();
Map mapImport = new HashMap();
for(Map map : list){
String colName = (String)map.get("COLUMN_NAME");
String[] dataType = getPropertyType(map);
sbPerp.append(" private ");
sbGet.append(" public ");
sbSet.append(" public void set"+ colName.substring(0,1).toUpperCase() + colName.substring(1) +"(");
if(dataType[0].equalsIgnoreCase("Date")){
mapImport.put("import java.util.Date;", "1");
sbPerp.append("Date");
sbGet.append("Date");
sbSet.append("Date");
}
else if(dataType[0].equalsIgnoreCase("Integer")){
sbPerp.append("Integer");
sbGet.append("Integer");
sbSet.append("Integer");
}
else if(dataType[0].equalsIgnoreCase("BigDecimal")){
mapImport.put("import java.math.BigDecimal;", "1");
sbPerp.append("BigDecimal");
sbGet.append("BigDecimal");
sbSet.append("BigDecimal");
}
else {
sbPerp.append("String");
sbGet.append("String");
sbSet.append("String");
}
sbPerp.append(" "+ colName +";\n");
sbGet.append(" get"+ colName.substring(0,1).toUpperCase() + colName.substring(1) +"() {\n");
sbGet.append(" return "+ colName +";\n");
sbGet.append(" }\n");
sbSet.append(" "+ colName +") {\n");
sbSet.append(" this."+ colName +" = "+ colName +";\n");
sbSet.append(" }\n");
}
Iterator it = mapImport.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
sbImport.append(key +"\n");
}
sbImport.append("import java.io.Serializable;\n");
sbFile.append("/**\n");
sbFile.append(" * @Copyright: 华为昆明数字经济学院-JAVA课程-高靖博 @Copy All rights reserved.\n");
sbFile.append(" */\n");
sbFile.append("package "+ domainPackage +";\n\n");
sbFile.append(sbImport);
sbFile.append("\n");
sbFile.append("import lombok.Data;\n");
//sbFile.append("import com.alibaba.druid.support.monitor.annotation.MTable;\n");
sbFile.append("\n");
//sbFile.append("@MTable(name = \""+table+"\")\n");
sbFile.append("@Data\n");
sbFile.append("public class "+ className +" implements Serializable {\n\n");
sbFile.append(" private static final long serialVersionUID = 1L;\n\n");
sbFile.append(sbPerp);
sbFile.append("\n");
sbFile.append(sbGet);
sbFile.append("\n");
sbFile.append(sbSet);
sbFile.append("}");
return sbFile.toString();
}
/**
* 域Example文件内容
* @param table
* @param list
* @param domainPackage
* @return
* @throws Exception
*/
public static String getDomainExampleFile(String table, List<Map> list, String domainPackage)throws Exception {
String className = getClassName(table);
Map mapImport = new HashMap();
StringBuffer sbFile = new StringBuffer();
StringBuffer sbCondition = new StringBuffer();
for(Map map : list){
// 生成条件语句
sbCondition.append(getConditions(map, " ", mapImport));
}
sbFile.append("/**\n");
sbFile.append(" * @Copyright: 华为昆明数字经济学院-JAVA课程-高靖博 @Copy All rights reserved.\n");
sbFile.append(" */\n");
sbFile.append("package "+ domainPackage +";\n\n");
sbFile.append("import java.util.ArrayList;\n");
sbFile.append("import java.util.List;\n");
sbFile.append("import java.util.Iterator;\n");
sbFile.append("import java.util.Date;\n");
Iterator it = mapImport.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
sbFile.append(key +"\n");
}
sbFile.append("\n");
sbFile.append("public class " + className + "Example {\n\n");
sbFile.append(" protected String orderByClause;\n\n");
sbFile.append(" protected boolean distinct;\n\n");
sbFile.append(" protected List<Criteria> oredCriteria;\n\n");
sbFile.append(" public " + className + "Example() {\n");
sbFile.append(" oredCriteria = new ArrayList<Criteria>();\n");
sbFile.append(" }\n\n");
sbFile.append(" public void setOrderByClause(String orderByClause) {\n");
sbFile.append(" this.orderByClause = orderByClause;\n");
sbFile.append(" }\n\n");
sbFile.append(" public String getOrderByClause() {\n");
sbFile.append(" return orderByClause;\n");
sbFile.append(" }\n\n");
sbFile.append(" public void setDistinct(boolean distinct) {\n");
sbFile.append(" this.distinct = distinct;\n");
sbFile.append(" }\n\n");
sbFile.append(" public boolean isDistinct() {\n");
sbFile.append(" return distinct;\n");
sbFile.append(" }\n");
sbFile.append(" public List<Criteria> getOredCriteria() {\n");
sbFile.append(" return oredCriteria;\n");
sbFile.append(" }\n\n");
sbFile.append(" public void or(Criteria criteria) {\n");
sbFile.append(" oredCriteria.add(criteria);\n");
sbFile.append(" }\n\n");
sbFile.append(" public Criteria or() {\n");
sbFile.append(" Criteria criteria = createCriteriaInternal();\n");
sbFile.append(" oredCriteria.add(criteria);\n");
sbFile.append(" return criteria;\n");
sbFile.append(" }\n\n");
sbFile.append(" public Criteria createCriteria() {\n");
sbFile.append(" Criteria criteria = createCriteriaInternal();\n");
sbFile.append(" if (oredCriteria.size() == 0) {\n");
sbFile.append(" oredCriteria.add(criteria);\n");
sbFile.append(" }\n");
sbFile.append(" return criteria;\n");
sbFile.append(" }\n\n");
sbFile.append(" protected Criteria createCriteriaInternal() {\n");
sbFile.append(" Criteria criteria = new Criteria();\n");
sbFile.append(" return criteria;\n");
sbFile.append(" }\n\n");
sbFile.append(" public void clear() {\n");
sbFile.append(" oredCriteria.clear();\n");
sbFile.append(" orderByClause = null;\n");
sbFile.append(" distinct = false;\n");
sbFile.append(" }\n\n");
sbFile.append(" protected abstract static class GeneratedCriteria {\n");
sbFile.append(" protected List<Criterion> cr
MyBatis代码生成工具-MyBatisTool
需积分: 0 57 浏览量
更新于2023-03-06
收藏 3.95MB ZIP 举报
MyBatisTool是一款高效实用的代码生成工具,专为简化MyBatis框架的开发工作而设计。它能够自动生成Mapper接口、对应的Mapper.xml SQL映射文件、数据实体类(DO)以及Example对象,极大地提高了开发效率,减少了手动编写重复代码的时间,同时也降低了出错的可能性。
在MyBatis框架中,Mapper接口是业务逻辑与SQL操作的桥梁,通过注解或XML文件定义SQL语句。使用MyBatisTool,开发者可以快速创建这些接口,无需手动编写每个方法。这不仅节省了时间,还使得代码保持了一致性和规范性。
Mapper.xml文件则是存放SQL语句的地方,它们与Mapper接口一一对应。MyBatisTool自动创建的XML文件中,通常会包含增删改查的基本操作,开发者可以根据需要进行调整和扩展。
数据实体类(DO)是用于封装数据库表中的字段和值的对象。MyBatisTool可以自动生成这些类,每个字段对应表中的一个列,这样在处理数据时就更加方便。此外,它还会生成getter和setter方法,便于属性的访问和设置。
Example对象是MyBatis提供的一个查询条件构建工具,用于构造复杂的查询条件。通过Example,开发者可以轻松地实现各种复杂的查询,而MyBatisTool会生成这些Example对象,简化了查询条件的编写。
MyBatisTool的使用流程通常包括以下步骤:
1. 配置:设置数据库连接信息,如URL、用户名、密码等。
2. 选择表:指定需要生成代码的数据库表。
3. 自定义配置:根据项目需求,可以自定义生成的代码模板,如字段注释、包名等。
4. 生成:点击生成按钮,MyBatisTool将按照预设生成相应的接口、XML、DO和Example类。
在开发过程中,MyBatisTool的lib目录可能包含了运行所需的依赖库,如MyBatis框架本身和其他支持库。src目录则是存放源代码的地方,分为java和resources子目录,分别存放Java源代码和资源配置文件。out目录通常是编译后的输出目录,.idea目录则包含了IntelliJ IDEA等IDE的工作区配置信息。
MyBatisTool是一款非常实用的MyBatis开发辅助工具,它可以帮助开发者快速构建MyBatis项目的基础代码结构,降低开发复杂度,提高开发效率,是MyBatis开发者的得力助手。无论是初学者还是经验丰富的开发者,都能从中受益,更专注于业务逻辑的实现,而非基础代码的编写。
神秘的高先生
- 粉丝: 4191
- 资源: 2
最新资源
- 全桥变器,可以实现零电压开关和零电流开关ZVS和ZCS 波形好,和仿真详细对应说明
- 三相桥式全控整流器及其详细的说明等
- No.825 基于S7-200 PLC和组态王自动扶梯控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- STM32+AD7124+热电偶方案+Pt100冷端补偿解析工程源码,源码包含Pt100、NTC热敏、热电偶处理驱动源码, 支持热电偶类型T、J、E、N、K、B、如果用于别的R、S 8种类型,并有Pt
- 暂态稳定性仿真分析 基于MATLAB Simulink的单机无穷大系统 可仿真、分析不同故障切除时间下,三相短路、两相短路接地、两相短路、单相接地短路故障状态下的暂态稳定性 可任意调节故障切除时间
- 带负载转矩前馈补偿的永磁同步电机FOC 1.采用滑模负载转矩观测器,可快速准确观测到负载转矩 赠送龙伯格负载转矩观测器用于对比分析 2.将观测到的负载转矩用作前馈补偿,可提高系统抗负载扰动能力;
- 双边工作自动裁断机全套设计资料100%好用.zip
- 基于STM32F4核心板的经典项目程序,远比网上搜索的开发板例程更有价值,历时2年时间打造 适合学生学习,工程师提高技术等等 项目内容为:用stm32f407单片机核心板和gy-91模块做一个功能
- 基于FAST与MATLAB SIMULINK联合仿真模型非线性风力发电机的PID独立变桨和统一变桨控制下仿真模型+参考文献,对于5WM非线性风机风机进行控制 链接simulink的scope出转速对比
- 永磁同步电机调速控制软件工程PMSM,该工程主要基于DSP28335硬件控制平台,两电平IPM模块主回路,DSP控制器控制, 配过压和过流保护,小功率电机调速控制,工程软件配注释,提供对应硬件原理图
- 汇川MD500E变频器开发方案 源码+解析, MD500E代码方案和解析文档+仿真资料 资料全 包含pmsm的foc控制算法,电阻、电感、磁链等参数的辩识算法,死区补偿算法过调制处理算法
- 超值福利 关键词:场景生成 缩减 微网优化调度,综合能源优化,matlab cplex等优化程序,全部打包带走,神经网络光伏预测,可提供优化学习资料 火火 运行环境:matlab 欢迎咨询
- Java项目:基于servlet+jsp+tomcat实现的网上点餐系统分享给需要的同学【完整源码+数据库】
- droop下垂并网控制,采用电压电流双环spwm控制.2018b版本
- 西门子1200PLC控制加KPT1200触摸屏,污水处理厂自控项目实例,含一台200SMART200加触摸屏泵站程序画面 内涵全套电气控制图纸 改建成已运行项目,所有应用均经过实际验证 应用包括
- 全套S7-1200一拖三恒压供水程序样例+PID样例+触摸屏样例 34 1、此程序采用S7-1200PLC和KTP1000PN触摸屏人机执行PID控制变频器实现恒压供水. 包括plc程序,触摸屏