当前位置: 首页 > news >正文

mysql传入Bean_mysql 表映射为java bean 手动生成。

在日常工作中,一般是先建表。后建类。

当然也有先UML构建类与类的层级关系,直接生成表。(建模)

这里只针对先有表后有类的情况。不采用代码生成器的情况。

例如:

原表结构:

d7482a7c0dc226586449db7134130165.png

假如这是我业务变动,添加的一个表,

同时我也要建对应的java类时。

一般我们是手动去复制。容易出错。而且也是体力活。这里面可以用SQL直接生成。

-- 创建存储 通过系统表解析出表的结构。然后把表结构拼接成java类。

CREATE PROCEDURE mypro(in tablename varchar(10),in dbo varchar(20))

BEGIN

declare colName varchar(100);

declare dataType varchar(100);

declare done int ;

declare temp varchar(100) default '';

declare `set` varchar(100) default '';

declare `get` varchar(100) default '';

declare resultTable cursor for select distinct column_name as name,data_type as type from information_schema.COLUMNS where table_name = tableName and table_SCHEMA = dbo;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

DROP TABLE IF EXISTS temp;

create table temp(

`data` varchar(100),

`set` varchar(100),

`get` varchar(100)

)ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

open resultTable;

posLoop:LOOP

FETCH resultTable into colName,dataType;

IF done=1 THEN

LEAVE posLoop;

END IF;

IF dataType='bigint' then

set temp = concat('private Integer ',colName,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','Integer ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public Integer get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='varchar' then

set temp = concat('private String ',colName, ';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','String ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public String get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='int' then

set temp = concat('private Integer ',colName ,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','Integer ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public Integer get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='date' then

set temp = concat('private Date ',colName ,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','Date ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public Date get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='datetime' then

set temp = concat('private Date ',colName ,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','Date ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public Date get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='decimal' then

set temp = concat('private BigDecimal ',colName ,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','BigDecimal ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public BigDecimal get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='char' then

set temp = concat('private String ',colName ,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','String ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public String get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

ELSEIF dataType='text' then

set temp = concat('private String ',colName ,';');

set `set` = concat('public void set',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(','String ',colName,'){ this.',colName,'=',colName,';','}');

set `get` = concat('public String get',UPPER(LEFT(colName,1)),RIGHT(colName,length(colName)-1),'(){ return ',colName,';','}');

END IF ;

insert into temp(`data`,`set`,`get`) values(temp,`set`,`get`);

END LOOP posLoop;

CLOSE resultTable;

END;

call mypro('person','test'); //第一个参数是表名,针对表名生成java类结构。第二个参数是dbo指定的哪个数据库

select * from temp;

效果图:

6b891e5266038cf4599aa907b45126b6.png

实际应用:

直接复制就行了。

122cccf6add19b2d60779782c2e578fc.png

结果:

073c544bbff5ef2df78f590bb5c14d88.png

完全正常, 这样就不用一个个去手动建java类了。

里面的toString() 跟类名 没有去自动生动。手动写一下就OK。这样就方便好了。

MYsql不支持print打印 只能select 所以就插入到表中了。

如果用mssql 就直接print 配合 CHAR(10),CHAR(13) 能直接生成一个完整的java bean 包括 toString() 方法 类名。mysql有一定的局限性。

如果这里是采用mybaits的话。

手动去复制表结构是很累人的。也容易出错。mybatis insert into tb(col1,col2) value(#{value1},#{value2});

END

相关文章:

  • mysql数据库程序员_大神程序员养成之路-Mysql数据库基础
  • mac svn客户端_SmartSVN 12 for Mac(SVN客户端)
  • mysql随机数据插入_mysql随机数据生成并插入
  • asp 备份 mysql数据库_用Asp备份与恢复SQL Server 数据库_数据库相关_脚本
  • mysql rds数据库优势_云数据库RDS基础版的优势及适用场景
  • mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法
  • host mysql server_mysql远程连接 Host * is not allowed to connect to this MySQL server
  • python 迭代对象必须实现的方法_关于python的可迭代对象、迭代器、生成器的理解...
  • python上手度_(国内首发)最新python初学者上手练习
  • mysql中引号的作用是什么_mysql单引号和双引号的用法
  • mysql 存储过程 光标_MYSQL 存储过程及游标
  • php封装一个mysql的类_PHP封装的一个单例模式Mysql操作类
  • java 字符串查找_Java-006 Java字符串查找
  • java类和对象的区别_java中的对象和类之间有什么区别
  • java继承创建_java继承的实现
  • 2017-08-04 前端日报
  • Java比较器对数组,集合排序
  • Java基本数据类型之Number
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • mockjs让前端开发独立于后端
  • React-flux杂记
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Unix命令
  • vue 配置sass、scss全局变量
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从伪并行的 Python 多线程说起
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端攻城师
  • 深度学习在携程攻略社区的应用
  • 时间复杂度与空间复杂度分析
  • 移动端 h5开发相关内容总结(三)
  • 进程与线程(三)——进程/线程间通信
  • ​决定德拉瓦州地区版图的关键历史事件
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • $(function(){})与(function($){....})(jQuery)的区别
  • (4)logging(日志模块)
  • (6)添加vue-cookie
  • (C语言)球球大作战
  • (多级缓存)缓存同步
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (万字长文)Spring的核心知识尽揽其中
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)关于pipe()的详细解析
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Framework .NET Core与 .NET 的区别
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)