当前位置:文档之家› 使用Mybatis Generator自动生成Mybatis相关代码

使用Mybatis Generator自动生成Mybatis相关代码

使用Mybatis Generator自动生成Mybatis相关代码
使用Mybatis Generator自动生成Mybatis相关代码

使用Mybatis Generator自动生成Mybatis相关代码

本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码:

一、构建一个环境:

1. 首先创建一个表:

Sql代码

1.CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHA

R(20), sex CHAR(1), birth DATE, death DATE);

2. 然后注入数据

Sql代码

1.insert into pet values('Fluffy', 'Harold', 'cat', 'f', '1993-02-04', null);

2.insert into pet values('Claws', 'Gwen', 'cat', 'm', '1994-03-17', null);

3.insert into pet values('Buffy', 'Harold', 'dog', 'f', '1989-05-13', null);

4.insert into pet values('Fang', 'Benny', 'dog', 'm', '1990-08-27', null);

5.insert into pet values('Bowser', 'Diane', 'dog', 'm', '1979-08-31', '1995-07-29');

6.insert into pet values('Chirpy', 'Gwen', 'bird', 'f', '1998-09-11', null);

7.insert into pet values('Whistler', 'Gwen', 'bird', null, '1997-12-09', null);

8.insert into pet values('Slim', 'Benny', 'snake', 'm', '1996-04-29', null);

注:这里的sql例子来自https://www.doczj.com/doc/ad1720383.html,/doc/refman/5.5/en/creating-tables.html

3. 在Mybatis 主页https://www.doczj.com/doc/ad1720383.html,/p/mybatis/ 上下载Mybatis

mybatis-generator-core [本文使用的是1.3.0 版本]。当然运行mybatis-generator 生成的代码还需要下载mybatis 的jar 包[本例使用的是3.0.2 版本],和相关数据库的jdbc [本文中使用的是MySql的jdbc] 。

二、运行mybatis-generator

1. 要运行generator ,需要给generator 提供一个配置文件,指定其生成的数据库的相关信息。

以下是一个示例:

Xml代码

1.

2.

3. PUBLIC "-//https://www.doczj.com/doc/ad1720383.html,//DTD MyBatis Generator Configuration 1.0//EN"

4. "https://www.doczj.com/doc/ad1720383.html,/dtd/mybatis-generator-config_1_0.dtd">

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16. connectionURL="jdbc:mysql://localhost/test" userId="qgd" password="123456">

17.

18.

19.

20.

21.

22.

23.

24. targetProject="../src/main/java">

25.

26.

27.

28.

29.

30. targetProject="../src/main/java">

31.

32.

33.

34.

35. targetPackage="test.dao" targetProject="../src/main/java">

36.

37.

38.

39.

40.

41.

42.

43.

这个配置文件提供了mybatis-generator所需要的参数信息:

* 其中classPathEntry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;

* commentGenerator 是用来除去时间信息的,这在配合类似subversion的代码管理工具时使用很有效,因为可以减少没有必要的注释迁入;

* jdbcConnection是指定的jdbc的连接信息;

* javaTypeResolver式类型转换的信息,这里并没有用到;

* javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径;

* sqlMapGenerator是mybatis 的sqlMapper XML文件的生成信息,包括生成路径等;

* javaClientGenerator是应用接口的生成信息;

* table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。

2. mybatis-generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相应的配置文件的路径即可:

Java代码

1.java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -over

write

运行后生成的代码包括模型类test.model.Pet 和test.model.PetExample ,

test.dao.PetMapper 接口以及其相对应的xml 映射文件,在这里就不在赘述了。

三、使用mybatis-generator 生成的代码

1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator 都可以得到】

Xml代码

1.

2.

3. PUBLIC "-//https://www.doczj.com/doc/ad1720383.html,//DTD Config 3.0//EN"

4. "https://www.doczj.com/doc/ad1720383.html,/dtd/mybatis-3-config.dtd">

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

2. 另外还要使用然后我们还需要一个Main示例方法来调用这些已生成的代码:

Java代码

1.package test;

2.

3.import java.io.Reader;

4.import java.util.List;

5.

6.import org.apache.ibatis.io.Resources;

7.import org.apache.ibatis.session.SqlSession;

8.import org.apache.ibatis.session.SqlSessionFactory;

9.import org.apache.ibatis.session.SqlSessionFactoryBuilder;

10.

11.import test.dao.PetMapper;

12.import test.model.Pet;

13.import test.model.PetExample;

14.

15.public class Test {

16.

17. public static void main(String[] args) throws Exception {

18. String resource = "MapperConfig.xml";

19. Reader reader = Resources.getResourceAsReader(resource);

20. SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);

21. SqlSession sqlSession = sqlMapper.openSession();

22.

23. PetExample pet = new PetExample();

24. pet.or().andDeathIsNotNull();

25. try {

26. PetMapper mapper = sqlSession.getMapper(PetMapper.class);

27. List allRecords = mapper.selectByExample(pet);

28. for (Pet s : allRecords)

29. System.out.println(s);

30. } finally {

31. sqlSession.close();

32. }

33. }

34.}

这样就可以打印出相应的查询结果信息了。

四、小结

该示例的完整的Eclipse工程见附件mybatis-generator-usage.zip,其中已经包含了示例需要使用的jar包。

本文中只是用到了mybatis-generator 的一部分功能,mybatis-generator 生成代码的方式还包括ant或Maven脚本,或者直接使用java API生成;另外通过修改配置文件,generator 还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。

这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis-generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。

结合Spring使用Mybatis Generator生成的代码

本文将简要介绍怎样利用Spring 整合Mybatis Generator自动生成的代码:

关于Mybatis Generator自动生成怎样自动生成代码,请参考这篇文章:使用Mybatis Generator 自动生成Mybatis相关代码,本篇文章将接着上一篇文章的例子继续。

一、准备环境

1. 下载jar包:首先要在Mybatis网站中下载相应的jar包mybatis-spring-1.0.0-RC2-bundle.zip https://www.doczj.com/doc/ad1720383.html,/p/mybatis/downloads/list?can=3&q=Product%3DSpring

另外当然还需要Spring的jar包,本文中用到版本的是3.0.4

2. 添加jar包:要使用mybatis-spring-1.0.0-RC1.jar,除了要在构建路径上添加jdbc包、Mybatis 的包外,还需要添加Spring的asm, beans, context, core, expression, jdbc, transaction这几个包,当然还要包括apache-commons-logging。

二、运行mybatis-generator

为了方便运行,在本示例中将Mybatis Generator的代码生成用ant脚本的方式给出:

Xml代码

1.

2.

3.

4.

5. classpath="mybatis-generator-core-1.3.0.jar" />

6.

7. verbose="false">

8.

9.

10.

不过在运行示例时请修改config.xml中jdbc jar包的位置,因为示例中使用的是绝对路径,而没有成功的转成相对路径,若有谁成功的转成相对路径的话,请留言相教,谢谢。

三、使用mybatis-generator 生成的代码

在使用Mybatis Generator自动生成Mybatis相关代码的文章中,我还不明白为什么要手写一个关于所有映射的配置文件。使用Spring后我知道了,原来在Spring中使用

mybatis-generator 生成的代码,根本就不需要这个配置文件,只要在Spring的context文件中配置相应的信息即可。

下面是context配置示例:

Xml代码

1.

2.

3. xmlns:xsi="https://www.doczj.com/doc/ad1720383.html,/2001/XMLSchema-instance"

4. xmlns:context="https://www.doczj.com/doc/ad1720383.html,/schema/context"

5. xsi:schemaLocation="

6. https://www.doczj.com/doc/ad1720383.html,/schema/context https://www.doczj.com/doc/ad1720383.html,/sc

hema/context/spring-context-3.0.xsd

7. https://www.doczj.com/doc/ad1720383.html,/schema/beans https://www.doczj.com/doc/ad1720383.html,/sche

ma/beans/spring-beans-3.0.xsd"

8. default-autowire="byName">

9.

10.

11. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

可以看到sqlSessionFactory bean中的configLocation属性被注释掉了,不过丝毫不影响对相应dao接口的使用。我们只需要编写下面的几行代码就已达到上篇文章示例中的相同效果:

Java代码

1.package test;

2.

3.import org.springframework.context.ApplicationContext;

4.import org.springframework.context.support.ClassPathXmlApplicationContext;

5.

6.import test.dao.PetMapper;

7.import test.model.PetExample;

8.

9.public class Test {

10.

11. public static void main(String[] args) {

12. ApplicationContext context = new ClassPathXmlApplicationContext("context.xml")

;

13. PetExample pet = new PetExample();

14. pet.or().andDeathIsNotNull();

15. PetMapper map = (PetMapper) context.getBean("petMapper1");

16. System.out.println(map.selectByExample(pet));

17. }

18.}

这里的给出的例子是结合Mybatis Generator自动生成的代码尽量少的手写代码的例子,但是灵活性上可能有不足。Mybatis的网站上提供了另外三种结合Spring使用的示例,详见https://www.doczj.com/doc/ad1720383.html,/p/mybatis/source/browse/#svn/sub-projects/mybatis-spring/trunk/src/test 这里就不再赘述了。

四、小结

该示例的完整的Eclipse工程见附件mybatis-generator-usage2.zip,其中已经包含了示例需要使用的jar包。

Labview 自动生成程序及应用程序

Labview 自动生成程序及应用程序 周青教主 2011.12.28

一自动生成程序的功能 (1) 二相关背景 (1) 三实际开发应注意以下几点: (1) 四相关函数介绍及具体范例 (2) 1.相关函数 (2) 2.具体范例 (3) 2.1 最简单的一段代码如图 3所示: (3) 2.2 在While循环里面添加Add函数 (4) 2.3在前面板放置RoundButton控件 (4) 2.4在前面板放置簇,并在簇里面放置数值控件 (4) 2.5生成一个显示随机数的波形图表程序,并自动运行 (5) 2.6 将E的程序添加自动整理框图功能 (5) 2.7 连线前面板控件与接线端 (5) 2.8 前面板接线端样式介绍 (5) 3.小结 (5) 五自动生成应用程序 (5) 六应用示例 (6) 1.自动生成一个时钟的应用程序并自动生成相应EXE (6) 2.注意 (6)

Labview 自动生成程序及应用程序一自动生成程序的功能 在使用Labview过程中,我们能接触到各种项目设置、生成向导。如:创建仪器驱动项目向导,创建Labview实时项目向导等。使用向导可以减少用户的学习曲线时间,并能快速、准确和动态的生成代码。Labview VI脚本(VI Scripting)有助于通过编程,生成、编辑并检测Labview代码,便于开发向导程序。 通过LabVIEW 脚本可以实现编程创建、修改并运行LabVIEW 代码。它包含多种新的VI 服务器类、属性和方法,有助创建、移动并连接对象(包括前面板、程序框图、和图标),有助编辑连线板,有助创建新型动态VI。 二相关背景 1.什么是VI Scripting? ●VI Scripting 是Labview中功能强大的特性之一,它允许用 户通过程序去创建或修改Labview程序 ●基于VI Server ●从Labview8.6开始提供给用户使用 2.为什么我们需要VI Scripting? ●制作向导——能通过简单的对话框自动生成代码,减少学 习曲线并且增加生产率 ●支持VI检查——能获取VI内容并检查 ●创建编译器——方便把其它G或C代码转化为G代码 3.用VI Scripting,我们能做什么? ●理论上,我们应该能做任何Labview编辑器能做的事情 ●事实上,你能做如下事情等: ?创建新的VI ?添加新的对象到前、后面板 ?修改前、后面板上的对象 ?将前面板控件和接线面板相关联 三实际开发应注意以下几点: 1)利用Labview VI脚本(VI Scripting)创建Labview向导程序, 此向导程序用于动态生成VI;

从simulink模型到PLC代码的自动生成功能

从simulink模型到PLC代码的自动生成是MATLAB2010提供的功能,目前支持的PLC编程工具有: CoDeSys2.3, CoDeSys3.3, RSLogix5000, B&R Automation Studio 3.0, PLCOpen XML, BeckhoffTwinCat 2.11以及Generic。 本文介绍了MATLAB生成TwinCat 2.11的ST文档的方法,并使用TwinCat 2.11建立相应的工程项目。 2. 使用MATLAB/simulink生成PLC的st语言功能函数的方法 MATLAB提供了很多demo一备参考,本文以MATLAB demo中的plcdemo_simple.mdl为例。首先在MATLAB命令行中执行命令demo,选择simulink PLC coder->Demos->Basic Introductions and Examples->Generating Structured Text for a Simple Simulink Subsystem,然后打开该模型。 打开参数配置面板(Simulation->Configuration Parameters),进入PLC Coder的选项页,将Targer IDE选为BeckhoffTwinCat 2.11。然后应用。 回到模型,右键点击SimpleSystem,选择PLC Coder->Generate Code For Subsystem。如果没有错误,将在当前目录下生成plcdemo_simple.exp文件及诊断对话框。该文件即为ST语言的PLC文档。如下

静态代码分析

静态代码分析 一、什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。 在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。 静态代码分析工具的优势 1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。 2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。 3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。 二、主流Java静态分析工具 Findbugs、checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用。 三者的功能如下表: 工具目的检查项 FindBugs 检查.class 基于Bug Patterns概念,查 找javabytecode(.class文件) 中的潜在bug 主要检查bytecode中的bug patterns,如NullPoint空指 针检查、没有合理关闭资源、字符串相同判断错(==, 而不是equals)等 PMD 检查源文件检查Java源文件中的潜在问 题 主要包括: 空try/catch/finally/switch语句块 未使用的局部变量、参数和private方法 空if/while语句 过于复杂的表达式,如不必要的if语句等 复杂类

20个代码生成框架

20个代码生成框架 1 1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://https://www.doczj.com/doc/ad1720383.html, 官方论坛:http://https://www.doczj.com/doc/ad1720383.html,/default.aspx 版权形式:30天试用 开源:否 需要先注册确认后才能下载 1.2 MyGenerator MyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith简单、好用。 所有api可以在帮助菜单中找到。 官方网站:http://https://www.doczj.com/doc/ad1720383.html,/portal/default.aspx 官方论坛: 版权形式:免费 开源:否 1.3 NHibernate. NHibernate是Hibernate公司在Java自动生成领域取得巨大成功后推出的一款ORM工具. 官方网站:http://https://www.doczj.com/doc/ad1720383.html,/ 官方论坛: 版权形式:免费 开源:否 1.4 湛蓝.Net代码生成器

一款基于软件自动生成理念,能直接生成应用的dotnet代码生成器 官方网站:http://https://www.doczj.com/doc/ad1720383.html, 官方论坛:http://https://www.doczj.com/doc/ad1720383.html,/ 版权形式:免费 开源:否 1.5 动软.NET代码自动生成器 一款人气很旺的免费C#代码生成器 官方网站:http://https://www.doczj.com/doc/ad1720383.html, 官方论坛: 版权形式:免费 开源:否 1.6 CodePlus 专为sql server c#语言设计的代码生成器,功能还是很强大 官方网站:http://https://www.doczj.com/doc/ad1720383.html, 官方论坛: 版权形式:需要少量的注册费用 开源:否 下载地址很神秘 1.7 CodeMaker asp,jsp,php代码生成工具,自动生成维护数据库信息的动态网页的代码生成器。它可以帮助ASP、JSP、PHP开发人员快速的开发简单的数据库维护程序。无需任何编码,只需将数据库结构导入到CodeMaker中并做简单的设置,CodeMaker即可生成完整的数据库操作页面。用CodeMaker可以简单快速的创建网站后台维护程序。提高开发效率数十倍以

静态分析、测试工具.doc

静态代码分析、测试工具汇总 静态代码扫描,借用一段网上的原文解释一下 ( 这里叫静态检查 ) :“静态测试包括代码检查、 静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势, 也可以借助软件工具自动进行。代码检查代码检查包括代码走查、桌面检查、代码审查等, 主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代 码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊 的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型 审查、程序逻辑审查、程序语法检查和程序结构检查等内容。”。 我看了一系列的静态代码扫描或者叫静态代码分析工具后,总结对工具的看法:静态代码 扫描工具,和编译器的某些功能其实是很相似的,他们也需要词法分析,语法分析,语意 分析 ...但和编译器不一样的是他们可以自定义各种各样的复杂的规则去对代码进行分析。 以下将会列出的静态代码扫描工具,会由于实现方法,算法,分析的层次不同,功能上会 差异很大。有的可以做 SQL注入的检查,有的则不能 ( 当然,由于时间问题还没有对规则进行研究,但要检查复杂的代码安全漏洞,是需要更高深分析算法的,所以有的东西应该不 是设置规则库就可以检查到的,但在安全方面的检查,一定程度上也是可以通过设置规则 进行检查的 )。 主 工具名静态扫描语言开源 / 厂商介绍 页付费网 址 https://www.doczj.com/doc/ad1720383.html,、C、 ounec5.0 C++和 C#,付 Ounce Labs \ 还支持费 Java。 还有其他辅助工具: 1.Coverity Thread Coverity C/C++,C#,JAV Analyzer for Java 付费Coverity 2.Coverity Software Prevent A Readiness Manager for Java 3.Coverity

程序代码自动生成系统的设计与实现

万方数据

万方数据

万方数据

万方数据

基于敏捷开发的高校网络评教系统 作者:吴衡, WU Heng 作者单位:天水师范学院物理与信息科学学院,甘肃天水,741001 刊名: 计算技术与自动化 英文刊名:Computing Technology and Automation 年,卷(期):2011,30(4) 被引用次数:1次 参考文献(8条) 1.丁增富;葛信勇构建教学质量监控体系努力提高教学质量[期刊论文]-高等农业教育 2004(03) 2.陈莉和谐校园构建于素质教育双效联动[期刊论文]-中国市场 2007(2-3) 3.成奋华;金敏基于敏捷过程的IT项目范围管理的研究与应用[期刊论文]-计算机技术与发展 2010(10) 4.徐诚斌;王金平MVC在ThinkPHP框架中的应用研究 2011(03) 5.赵国栋;黄永中开源软件在高校的应用与推广策略研究[期刊论文]-中国资源综合利用 2007(01) 6.马文龙;高宝成用php实现基于MVC模式的Web应用程序开发 2008(07) 7.原晓林基于B/S教学管理系统的开发与研究[期刊论文]-山西警官高等专科学校学报 2009(04) 8.蓝蔚青;曹剑敏;张帆高校学生网络评教系统的构建与完善[期刊论文]-高等农业教育 2006(06) 引证文献(1条) 1.蒋建洪电子商务系统协同开发实践教学研究[期刊论文]-中国教育信息化·基础教育 2013(5) 本文链接:https://www.doczj.com/doc/ad1720383.html,/Periodical_jsjsyzdh201104028.aspx

【CN109765836A】PLC程序的自动生成方法、装置和实现装置【专利】

(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910108238.9 (22)申请日 2019.02.02 (71)申请人 宁波吉利汽车研究开发有限公司 地址 315000 浙江省宁波市杭州湾新区滨 海二路818号 申请人 吉利汽车研究院(宁波)有限公司 (72)发明人 胡峥楠 张尧 李志光 李红  黄天聪 李绪超  (74)专利代理机构 北京超凡志成知识产权代理 事务所(普通合伙) 11371 代理人 张阳 (51)Int.Cl. G05B 19/05(2006.01) (54)发明名称 PLC程序的自动生成方法、装置和实现装置 (57)摘要 本发明提供了一种PLC程序的自动生成方 法、装置和实现装置,其中,该方法包括:获取PLC 模板程序;该PLC模板程序包括硬件组态、变量名 称、安全程序和普通程序;获取保存有当前PLC的 控制对象的表格文件;在表格文件中,通过预设 的安全区域和模式区域将控制对象进行设备划 分,每个控制对象保存在对应的表格坐标中;根 据PLC模板程序和表格文件,生成当前PLC对应的 PLC程序。本发明可以缩短PLC离线程序的编写时 间,保证PLC程序的一致性,从而降低了编程的错 误率、提高了工作效率, 降低了项目成本。权利要求书2页 说明书9页 附图9页CN 109765836 A 2019.05.17 C N 109765836 A

权 利 要 求 书1/2页CN 109765836 A 1.一种PLC程序的自动生成方法,其特征在于,所述方法包括: 获取PLC模板程序;所述PLC模板程序包括硬件组态、变量名称、安全程序和普通程序; 获取保存有当前PLC的控制对象的表格文件;所述表格文件中,通过预设的安全区域和模式区域将所述控制对象进行设备划分,每个所述控制对象保存在对应的表格坐标中; 根据所述PLC模板程序和所述表格文件,生成所述当前PLC对应的PLC程序。 2.根据权利要求1所述的方法,其特征在于,所述根据所述PLC模板程序和所述表格文件,生成所述当前PLC对应的PLC程序的步骤,包括: 根据所述表格文件中,每个所述控制对象保存的对应的表格坐标,从所述PLC模板程序中导出对应的程序块的XML文件; 根据所述表格文件,修改所述XML文件的变量名称; 将修改后的所述XML文件导入TIA Portal中,生成所述当前PLC对应的PLC程序。 3.根据权利要求2所述的方法,其特征在于,所述根据所述表格文件,修改所述XML文件的变量名称的步骤,包括: 从所述表格文件中读取需要修改的变量名称和目标名称; 查找所述XML文件中所述需要修改的变量名称; 将所述需要修改的变量名称替换为所述目标名称。 4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 从所述表格文件中获得存储文件夹名称; 建立所述存储文件夹名称对应的文件夹; 将所述PLC程序保存在所述文件夹中。 5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 接收用户输入的模式区域的数量、HMI的数量、带模式旋钮的操作盒的数量。 6.一种PLC程序的自动生成装置,其特征在于,所述装置包括: 模板程序获取模块,用于获取PLC模板程序;所述PLC模板程序包括硬件组态、变量名称、安全程序和普通程序; 表格文件获取模块,用于获取保存有当前PLC的控制对象的表格文件;所述表格文件中,通过预设的安全区域和模式区域将所述控制对象进行设备划分,每个所述控制对象保存在对应的表格坐标中; 程序生成模块,用于根据所述PLC模板程序和所述表格文件,生成所述当前PLC对应的PLC程序。 7.根据权利要求6所述的装置,其特征在于,所述程序生成模块,还用于: 根据所述表格文件中,每个所述控制对象保存的对应的表格坐标,从所述PLC模板程序中导出对应的程序块的XML文件; 根据所述表格文件,修改所述XML文件的变量名称; 将修改后的所述XML文件导入TIA Portal中,生成所述当前PLC对应的PLC程序。 8.根据权利要求7所述的装置,其特征在于,所述程序生成模块,还用于: 从所述表格文件中读取需要修改的变量名称和目标名称; 查找所述XML文件中所述需要修改的变量名称; 将所述需要修改的变量名称替换为所述目标名称。 2

代码自动生成系统

本钢ERP代码自动生成系统的开发 史洪波 (本钢信息自动化公司软件开发事业部) 摘要:本钢ERP系统维护的工作量大,大部分的页面功能类似。在新增业务需求的情况下,可以利用本系统自动修改和生成JSP、Java、XML、SQL、Properties类型的全部代码,生成的代码可以提供新增、修改、删除、导入、树、打印、查询等基本功能。本系统原理是利用各种页面风格的JSP、Java、XML、SQL等文件作为模板,利用配置参数替换掉文件中可变部分,从而形成多种页面风格通用的代码生成系统。本文总结了本钢ERP中常用的6种页面样式,并用Java语言实现了其代码的自动生成过程,只需书写好DAO文件并在系统中填写少许的配置信息,然后点击按钮即可完成代码的产生,节省时间,提高工作效率。 关键词:ERP Java 代码自动生成 Benxi Steel ERP automatic code generation system Shi Hongbo (Benxi Steel Information & Automation Co.Ltd Software Development Department) ABSTRACT:There are a great deal maintain work in Benxi Iron and Steel Co. Ltd. ERP system, most of the page features are similar. In the case of needing new business, the system can automatically generate and modify all of the codes in many types, such as JSP, Java, Xml, SQL, Properties. Codes provide new, modify, delete, import, tree, print, query, and other basic functions and pride many different page styles by replacing the parameter of file. There are 6 common page styles are summarized in the Benxi Iron and Steel Co. Ltd. ERP, and use java language to achieve the automatic code generation process, just to write the file of DAO in the system and a little configuration information, then click the button to complete the code, saved a lot of time and improved the work efficiency. KEY WORD: ERP Java automatic-code-generation 作者简介: 史洪波,男,出生于1974年7月28日,1998年7月毕业于华东冶金学院工业分析专业,同年到本钢技术中心从事钢铁检验工作。2006年3月调至本钢信息自动化公司软件开发事业部从事软件开发工作。Email:mynameshb@https://www.doczj.com/doc/ad1720383.html, 1、引言 本钢ERP系统有着良好的开发规范,命名规则有规律可循,因此在新增业务需求的情况下非常适合用代码自动生成系统来减少开发过程中的工作量,减少了开发人员的Ctrl+C/Ctrl+V操作,节省时间,提高工作效率。本系统原理是利用各种页面风格的JSP、Java、XML、SQL等文件作为模板,利用配置参数替换掉文件中可变部分,从而形成多种页面风格通用的代码生成系统。本系统采用J2SE中的Awt和Swing技术来绘制整个系统的图形界面,使系统界面整洁美观,使用xml文件作为本系统的配置文件,并对XML文件设定了DTD的格式校验,保证XML的格式良好。在系统界面中输入少量的条件即可产生和修改JSP、Java、XML、SQL、Properites等类型的文件,并对已经存在的文件先备份成Bak文件,生成的代码可具有新增、修改、删除、查询、导入、树、打印等功能。由于XML具有便于阅读和理解,可扩展等优点,而DAO文件格式的不规范性,系统中还提供了DAO文件与XML格式的相互转换,转换中使用了XLST技术,简化了转

利用MATLABsimulink的自动代码生成工具开发PLC程序

1. 对于大型的、比较复杂的控制系统,手工编程不仅耗费人力,而且准确率较低。MATLAB/simulink是一种强大的模块化、图形化的编程工具,能够很方便的设计控制系统。MATLAB 2010a提供了从simulink模型到PLC代码的自动生成功能。目前支持的PLC编程工具有: CoDeSys2.3, CoDeSys3.3, RSLogix5000, B&R Automation Studio 3.0, PLCOpen XML, Beckhoff TwinCat 2.11以及Generic。 本文介绍了MATLAB生成TwinCat 2.11的ST文档的方法,并使用TwinCat 2.11建立相应的工程项目。 2. 使用MATLAB/simulink生成PLC的st语言功能函数的方法 MATLAB提供了很多demo一备参考,本文以MATLAB demo中的plcdemo_simple.mdl为例。首先在MATLAB命令行中执行命令demo,选择simulink PLC coder->Demos->Basic Introductions and Examples->Generating Structured Text for a Simple Simulink Subsystem,然后打开该模型。 打开参数配置面板(Simulation->Configuration Parameters),进入PLC Coder的选项页,将Targer IDE选为Beckhoff TwinCat 2.11。然后应用。 回到模型,右键点击SimpleSystem,选择PLC Coder->Generate Code For Subsystem。如果没有错误,将在当前目录下生成plcdemo_simple.exp文件及诊断对话框。该文件即为ST语言的PLC文档。如下

java自动生成代码

1.与数据库建立连接 在DBUtil中设置数据库相关的参数 Class.forName(driverName); conn = DriverManager.getConnection(url, user, password); 2.获得数据库中的所有表 Mapmaps = new HashMap(); PreparedStatement pstate = conn.prepareStatement("show table status"); ResultSet results = pstate.executeQuery(); while (results.next()) { String tableName = results.getString("NAME"); String comment = results.getString("COMMENT"); maps.put(tableName, comment); } 3.获得每个表中的信息

封装一个实体来存储表中的信息 PreparedStatement pstate = conn.prepareStatement("show full fields from " + tableName); ResultSet results = pstate.executeQuery(); List lists = new ArrayList(); while (results.next()) { Column column = new Column(); String field = results.getString("FIELD"); column.setFeildMapper(field); String fieldName = processField(field);

自动代码生成规则

自动代码生成 1.表存储过程 TableName规则为剔出” _ ,” - ”等特殊字符,首单词大写例如Sys_Log 转换后为SysLog 如果是FlowER 中,则命名规则为 usp_SystemName_TableName_Operation 否则命名规则为usp_SystemName _Operation 存储过程名称及其功能: 是否存在记录usp_SystemName _IsExist 添加一条记录usp_SystemName _Insert 更新一条记录usp_SystemName _Update 删除一条记录usp_SystemName _Delete 获取实体usp_SystemName _GetModel 获取一批记录usp_SystemName _GetList 2.Entity 私有属性定义时不赋予初始值 命名空间规则为:BenQ.Application.SystemName.Entity ClassName规则为TableName剔出” _ , ” - ”等特殊字符,首单词大写例如Sys_Log 转换后为SysLog 3.DataAccess

命名空间为:BenQ.Application.SystemName.DAL 函数及其功能: -- 是否存在记录public bool IsExist(PK), public IsExist(int RowID) -- 添加一条记录public Insert(BenQ.Application.SystemName.Entity objEntity) -- 更新一条记录public Update(BenQ.Application.SystemName.Entity objEntity) -- 删除一条记录public bool Delete(PK), public Delete(int RowID) -- 获取实体public Entity GetModel(PK), public Entity GetModel(int RowID), -- 获取一批记录public DataTable GetList (Parameters), public DataSet GetList (Parameters), 4.Business 命名空间为:BenQ.Application.SystemName.BL 函数及其功能: IsExist(int RowID) -- 添加一条记录bool bool bool bool -- 是否存在记录public bool IsExist(PK), public bool public bool

ASCET代码生成简易说明

ASCET 代码生成配置 ETAS/陈炯 对于所有特定芯片的项目都需要对相应的target 文件夹中的 *.ini , *.mk and *.xml 等文件进行配置,以满足代码生成的需要. ASCET 从模型生成代码, 在利用外部工具对代码进行编译链接生成可执行文件。参看下图。 所有特定芯片的代码生成过程是由以下三种类型的配置文件控制的: 1. codegen [_*].ini 文件控制核心的代码生成器。 2. target.ini 给用于OS 配置的项目编辑器提供特定的芯片信息。 3. memorySections.xml 定义了用于ASCET 实施编辑器中的内存类的名称,并将名称与特定芯片的编译指令映射起来。 ASCET 对代码进行编译是通过一系列的GNU makefile (后缀是 .mk )的文件进行控制的. ASCET 对代码的编译是在对项目编译的过程中进行的。 本文档所有内容摘自 v6.1 SE 手册,具体相关信息请查看手册。 C:\ETAS\ ETASManuals\ASCET V C:\ETAS\ETASManuals\ASCET V6.1\ASCET-SE Manual.pdf 1 codegen[_*].ini 文件 ASCET 使用3个文件来控制代码生成器: ? .\target\trg_\codegen.ini ? .\target\trg_\codegen_.ini ? .\target\trg_\codegen_ecco.ini 这几个文件一起控制以下的属性: ? 代码风格,例如变量名称 ? 代码生成,例如变量初始化,使用 #pragma 语句等 ? 整合操作系统,例如消息的选择,创建钩子函数,OIL 描述文件的产生 用户可以定义在代码生成过程中使用的这些 *.ini 文件,但一般不用修改这些文件。

4种代码扫描工具分析

简介 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有4 种主流Java 静态代码分析工具(Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。 引言 在Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测试成本。目前市场上的Java 静态代码分析工具种类繁多且各有千秋,因此本文将分别介绍现有4 种主流Java 静态代码分析工具(Checkstyle,FindBugs,PMD,Jtest),并从功能、特性等方面对它们进行分析和比较,希望能够帮助Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。

静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。 在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。 但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。 静态代码分析工具的优势 1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。 2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。 3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。

C#自动代码生成器

C#自动代码生成器 自动生成数据表和实体类 namespace SQLApplicationAutoGeneratiTool { public partial class Form1 : Form { string[] strArray = { "int", "string", "decimal", "bool", "char", "object", "double", "float", "DateTime" }; String path = @"..\..\..\类文件\"; public Form1() { InitializeComponent(); } private void 新增文本框ToolStripMenuItem_Click(object sender, EventArgs e) { ShengChengKongJian(); } private void ShengChengKongJian() { ComboBox cobm = new ComboBox(); for (int i = 0; i < strArray.Count(); i++) { cobm.Items.Add(strArray[i]); } TextBox textbox = new TextBox(); this.flowLayoutPanel1.Controls.Add(cobm);

this.flowLayoutPanel2.Controls.Add(textbox); } StringBuilder stbd = null; List strbldList = new List(); private void button1_Click(object sender, EventArgs e) { if (comboBox1.Text.Trim() == "") { MessageBox.Show("类名不能为空"); return; } stbd = new StringBuilder("using System;"); strbldList.Add(stbd); stbd = new StringBuilder("using System.Collections.Generic;"); strbldList.Add(stbd); stbd = new StringBuilder("using System.Linq;"); strbldList.Add(stbd); stbd = new StringBuilder("using System.Text;"); strbldList.Add(stbd); stbd = new StringBuilder("using System.Data;"); strbldList.Add(stbd); stbd = new StringBuilder("using System.Data.SqlClient;"); strbldList.Add(stbd); stbd = new StringBuilder("using System.Windows.Forms;"); strbldList.Add(stbd); stbd = new StringBuilder("namespace HospitalInformationManagmentSystem"); strbldList.Add(stbd); stbd = new StringBuilder("{"); strbldList.Add(stbd); stbd = new StringBuilder(" /* 作者:大理大学软件教研室杜老师"); strbldList.Add(stbd); stbd = new StringBuilder(" * 日期:" + dateTimePicker1.Text.Trim()); strbldList.Add(stbd); stbd = new StringBuilder(" * 版权:大理大学"); strbldList.Add(stbd); stbd = new StringBuilder(" * 你可以免费使用或修改以下代码,但请保留版权信息,否则将追究相关责任"); strbldList.Add(stbd); stbd = new StringBuilder(" */"); strbldList.Add(stbd); stbd = new StringBuilder(" public class "); stbd.Append(comboBox1.Text.Trim()); strbldList.Add(stbd);

java代码静态检查工具介绍

静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。 代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和 设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代 码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构 检查等内容。”。看了一系列的静态代码扫描或者叫静态代码分析工具后, 总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的,他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可 以自定义各种各样的复杂的规则去对代码进行分析。 静态检测工具: 1. PMD 1)PMD是一个代码检查工具,它用于分析 Java 源代码,找出潜在的问题: 1)潜在的bug:空的try/catch/finally/switch语句 2)未使用的代码:未使用的局部变量、参数、私有方法等 3)可选的代码:String/StringBuffer的滥用 4)复杂的表达式:不必须的if语句、可以使用while循环完成的for循环 5)重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs 2)PMD特点: 1)与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在 不运行Java程序的情况下报告错误。 2)PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许 多问题 3)用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。 3)同时,PMD已经与JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、 CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、 IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs 集成在一起。 4)PMD规则是可以定制的: 可用的规则并不仅限于内置规则。您可以添加新规则: 可以通过编写 Java 代码并重新编译 PDM,或者更简单些,编写 XPath 表 达式,它会针对每个 Java 类的抽象语法树进行处理。 5)只使用PDM内置规则,PMD 也可以找到你代码中的一些真正问题。某些问题可能 很小,但有些问题则可能很大。PMD 不可能找到每个 bug,你仍然需要做单元测试和接受测试,在查找已知 bug 时,即使是 PMD 也无法替代一个好的调试器。 但是,PMD 确实可以帮助你发现未知的问题。 1. FindBugs 1)FindBugs是一个开源的静态代码分析工具,基于LGPL开源协议,无需 运行就能对代码进行分析的工具。不注重style及format,注重检测真正

静态源代码安全检测工具比较

静态源代码安全检测工具比较 1. 概述 随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分。在享受互联网带来的各种方便之处的同时,安全问题也变得越来越重要。黑客、病毒、木马等不断攻击着各种网站,如何保证网站的安全成为一个非常热门的话题。 根据IT研究与顾问咨询公司Gartner统计数据显示,75%的黑客攻击发生在应用层。而由NIST的统计显示92%的漏洞属于应用层而非网络层。因此,应用软件的自身的安全问题是我们信息安全领域最为关心的问题,也是我们面临的一个新的领域,需要我们所有的在应用软件开发和管理的各个层面的成员共同的努力来完成。越来越多的安全产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证应用安全。 对于应用安全性的检测目前大多数是通过测试的方式来实现。测试大体上分为黑盒测试和白盒测试两种。黑盒测试一般使用的是渗透的方法,这种方法仍然带有明显的黑盒测试本身的不足,需要大量的测试用例来进行覆盖,且测试完成后仍无法保证软件是否仍然存在风险。现在白盒测试中源代码扫描越来越成为一种流行的技术,使用源代码扫描产品对软件进行代码扫描,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量。黑盒的渗透测试和白盒的源代码扫描内外结合,可以使得软件的安全性得到很大程度的提高。 源代码分析技术由来已久,Colorado 大学的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上发表了著名的 Data Flow Analysis in Software Reliability,其中就提到了数据流分析、状态机系统、边界检测、数据类型验证、控制流分析等技术。随着计算机语言的不断演进,源代码分析的技术也在日趋完善,在不同的细分领域,出现了很多不错的源代码分析产品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的产品。而在静态源代码安全分析方面,Fortify 公司和 Ounce Labs 公司的静态代码分析器都是非常不错的产品。对于源代码安全检测领域目前的供应商有很多,这里我们选择其中的三款具有代表性的进行对比,分别是Fortify公司的Fortify SCA,Security Innovation公司的Checkmarx Suite和Armorize 公司的CodeSecure。 2. 工具介绍 2.1. Fortify SCA(Source Code Analysis) Fortify Software公司是一家总部位于美国硅谷,致力于提供应用软件安全开发工具和管理方案的厂商。Fortify为应用软件开发组织、安全审计人员和应用安全管理人员提供工具并确立最佳的应用软件安全实践和策略,帮助他们在软件开发生命周期中花最少的时间和成本去识别和修复软件源代码中的安全隐患。 Fortify SCA是Fortify360产品套装中的一部分,它使用fortify公司特有的X-Tier Dataflow? analysis技术去检测软件安全问题。

相关主题
相关文档 最新文档