hibernate5.0.4入门实例

hibernate5.0.4入门实例
hibernate5.0.4入门实例

Hibernate5.0.4入门实例

一、创建一个java普通工程hibernate,建立一个lib文件夹并导入需要的jar文件

并右击lib文件夹将导入的lib文件build path,建立classpath,这样代码中才能连接导入的jar包

二、创建包,然后在包下创建实体类News(也就是操作数据库的类)

package com.study.hibernate;

importjava.sql.Date;

public class News {

private Integer id;

private String title;

private String author;

private Date date;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

}

然后建立建立相关的hibernate XML Mapping file文件News.hbm.xml

三、建立hibernate 配置文件hibernate.cfg.xml,

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"https://www.360docs.net/doc/ad8714844.html,/dtd/hibernate-configuration-3.0.dtd">

root

kxf3099

name="connection.driver_class">com.mysql.jdbc.Driver

name="connection.url">jdbc:mysql://localhost:3306/hibernate

name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect

true

true

update

四、建立测试类NEW-JUnit Test Case ---------HibernateTest.java

package com.study.hibernate;

import static org.junit.Assert.*;

importjava.sql.Date;

importorg.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.boot.Metadata;

import org.hibernate.boot.MetadataSources;

import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl; importorg.hibernate.boot.registry.StandardServiceRegistry;

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import org.junit.Test;

public class HibernateTest {

@Test

public void test() {

StandardServiceRegistrystandardRegistry = new StandardServiceRegistryBuilder()

.configure( "hibernate.cfg.xml" )

.build();

Metadata metadata = new MetadataSources( standardRegistry )

.addAnnotatedClass( News.class )

.addAnnotatedClassName( "com.study.hibernate.News" )

.addResource( "com/study/hibernate/News.hbm.xml" )

.getMetadataBuilder()

.applyImplicitNamingStrategy( ImplicitNamingStrategyJpaCompliantImpl.IN STANCE )

.build();

SessionFactorysessionFactory = metadata.getSessionFactoryBuilder() .build();

Session session=sessionFactory.openSession();

Transaction transaction=session.beginTransaction();

News news=new News();

news.setId(1);

news.setTitle("java");

news.setAuthor("kuang");

news.setDate(new Date(new java.util.Date().getTime()));

session.save(news);

https://www.360docs.net/doc/ad8714844.html,mit();

session.close();

sessionFactory.close();

}

}

由此完成第一个实例,Run AS 即可完成对数据库的操作(此实例的前提是mysql数据库已安装好并启动服务)

annotation入门_

Java Annotation 入门
摘要: 本文针对 java 初学者或者 annotation 初次使用者全面地说明了 annotation 的使用方法、定义 方式、分类。初学者可以通过以上的说明制作简单的 annotation 程序,但是对于一些高级的 an notation 应用(例如使用自定义 annotation 生成 javabean 映射 xml 文件)还需要进一步的研 究和探讨。涉及到深入 annotation 的内容,作者将在后文《Java Annotation 高级应用》中谈 到。
同时,annotation 运行存在两种方式:运行时、编译时。上文中讨论的都是在运行时的 annota tion 应用,但在编译时的 annotation 应用还没有涉及,
一、为什么使用 Annotation:
在 JAVA 应用中,我们常遇到一些需要使用模版代码。例如,为了编写一个 JAX-RPC web serv ice,我们必须提供一对接口和实现作为模版代码。如果使用 annotation 对远程访问的方法代码 进行修饰的话,这个模版就能够使用工具自动生成。 另外,一些 API 需要使用与程序代码同时维护的附属文件。例如,JavaBeans 需要一个 BeanIn fo Class 与一个 Bean 同时使用/维护,而 EJB 则同样需要一个部署描述符。此时在程序中使用 a nnotation 来维护这些附属文件的信息将十分便利而且减少了错误。
二、Annotation 工作方式:
在 5.0 版之前的 Java 平台已经具有了一些 ad hoc annotation 机制。比如,使用 transient 修 饰符来标识一个成员变量在序列化子系统中应被忽略。而@deprecated 这个 javadoc tag 也是 一个 ad hoc annotation 用来说明一个方法已过时。从 Java5.0 版发布以来,5.0 平台提供了 一个正式的 annotation 功能:允许开发者定义、使用自己的 annoatation 类型。此功能由一个 定义 annotation 类型的语法和一个描述 annotation 声明的语法,读取 annotaion 的 API,一 个使用 annotation 修饰的 class 文件,一个 annotation 处理工具(apt)组成。
1

mybatis面试题

1、Mybatis基础: #{...} 和${...} 的区别 MyBatis将#{…} 解释为JDBC prepared statement 的一个参数标记。而将${…} 解释为字符串替换。理解这两者的区别是很有用的, 因为在某些SQL语句中并不能使用参数标记(parameter markers)。 比如,我们不能在表名(table name)的位置使用参数标记。 假设有下面的代码: 01.Mapparms = new HashMap(); 02.parms.put("table", "foo"); // 表名 03.parms.put("criteria", 37); // 查询过滤条件 04.List rows = mapper.generalSelect(parms); 01. MyBatis生成的SQL语句(prepared statement)如下所示: 01.select * from foo where col1 = ? 重要提示: 请注意,使用$ {…} (字符串替换)时可能会有SQL注入攻击的风险。另外,字符串替换在处理复杂类型也可能常常发生问题,如日期类型。由于这些因素,我们建议您尽可能地使用#{…} 这种方式。 要使用LIKE语句该怎么写? 2、有两种使用LIKE的方法。(推荐使用)第一种方法是,在Java代码中添加SQL通配符。 示例一: 01.StringwildcardName = "%Smi%"; 02.List names = mapper.selectLike(wildcardName); 01.

shiro入门教程

一、介绍: shiro是apache提供的强大而灵活的开源安全框架,它主要用来处理身份认证,授权,企业会话管理和加密。 shiro功能:用户验证、用户执行访问权限控制、在任何环境下使用session API,如cs程序。可以使用多数据源如同时使用oracle、mysql。单点登录(sso)支持。remember me服务。详细介绍还请看官网的使用手册:https://www.360docs.net/doc/ad8714844.html,/reference.html 与spring security区别,个人觉得二者的主要区别是: 1、shiro灵活性强,易学易扩展。同时,不仅可以在web中使用,可以工作在任务环境内中。 2、acegi灵活性较差,比较难懂,同时与spring整合性好。 如果对权限要求比较高的项目,个人建议使用shiro,主要原因是可以很容易按业务需求进行扩展。 附件是对与shiro集成的jar整合及源码。 二、shiro与spring集成 shiro默认的配置,主要是加载ini文件进行初始化工作,具体配置,还请看官网的使用手册(https://www.360docs.net/doc/ad8714844.html,/web.html)init文件不支持与spring的集成。此处主要是如何与spring及springmvc集成。 1、web.xml中配置shiro过滤器,web.xml中的配置类使用了spring的过滤代理类来完成。 Xml代码 2、在spring中的application.xml文件中添加shiro配置:

Java代码

anon org.apache.shiro.web.filter.authc.AnonymousFilter authc org.apache.shiro.web.filter.authc.FormAuthenticatio nFilter authcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenti cationFilter logout org.apache.shiro.web.filter.authc.LogoutFilter noSessionCrea tion org.apache.shiro.web.filter.session.NoSessionCreati onFilter perms org.apache.shiro.web.filter.authz.PermissionsAuthor izationFilter port org.apache.shiro.web.filter.authz.PortFilter rest org.apache.shiro.web.filter.authz.HttpMethodPermiss ionFilter roles org.apache.shiro.web.filter.authz.RolesAuthorizatio nFilter ssl org.apache.shiro.web.filter.authz.SslFilter user https://www.360docs.net/doc/ad8714844.html,erFilter

企业级JAVA高级开发技术实战

关于举办企业级JAVA高级开发技术实战 培训班的通知 一、培训收益 通过此次课程培训,可使学习者获得如下收益: 1.掌握JavaSE的异常处理方法; 2.掌握多线程基础知识; 3.掌握IO系统、网络编程、Java反射机制、JVM性能调优; 4.理解JavaEE,EJB、JMS,Java语言的高级特征; 5.了解GoF的设计模式、Spring AOP、WebService与CXF。 二、培训特色 1.理论与实践相结合、案例分析与行业应用穿插进行; 2.专家精彩内容解析、学员专题讨论、分组研究; 3.通过全面知识理解、专题技能和实践结合的授课方式。

四、授课专家 刘老师有15年JAVA开发经验,9年授课经验. 精通J2EE多层架构和多种设计模式,熟悉Struts、MyBatis、Hibernate、Spring、Spring MVC、Android、H5、Jquery Mobile、AngularJS、Bootstrap等多种开源框架, 对源码有一定的理解. 熟悉 WebLogic, JBoss 容器并发集群的使用, 熟悉WebService、CXF、RESFul、UML、SVN、EasyUI、Flex、Lucene 等技术。长期专注于J2EE系统的分析与设计,亲身参与多个J2EE项目研发和应用系统升级,并主导系统架构设计,有着丰富的系统分析设计工作经验 张老师天津大学软件工程硕士,10多年的IT领域相关技术研究和项目开发工作,在长期软件领域工作过程中,对软件企业运作模式有深入研究,熟悉软件质量保障标准ISO9003和软件过程改进模型CMM/CMMI,在具体项目实施过程中总结经验,有深刻认识。通晓多种软件设计和开发工具。对软件开发整个流程非常熟悉,能根据项目特点定制具体软件过程,并进行项目管理和监控,有很强的软件项目组织管理能力。对C/C++ 、HTML 5、Hadoop、java、java EE、android、IOS、大数据、云计算有比较深入的理解和应用,具有较强的移动互联网应用需求分析和系统设计能力,熟悉Android框架、IOS框架等技术,了解各种设计模式,能在具体项目中灵活运用。 龚老师企业级J2EE专家,博士,北京理工大学软件研究所计算机应用技术专业。在软件行业工作近二十年,近50多个大中型项目的主持、管理、开发经验。主要学术成果: 近年来先后在国内外重要刊物发表论文20多篇,多篇被EI收录,出版著作4部。参与完成自然科学基金项目2项,参与纵向课题5项,主持横向科研项目5项。

RESTEasy入门经典

RESTEasy是JBoss的开源项目之一,是一个RESTful Web Services框架。RESTEasy的开发者Bill Burke同时也是JAX-RS的J2EE标准制定者之一。JAX-RS 是一个JCP制订的新标准,用于规范基于HTTP的RESTful Web Services的API。 我们已经有SOAP了,为什么需要Restful WebServices?用Bill自己的话来说:"如果是为了构建SOA应用,从技术选型的角度来讲,我相信REST比SOAP更具优势。开发人员会意识到使用传统方式有进行SOA架构有多复杂,更不用提使用这些做出来的接口了。这时他们就会发现Restful Web Services的光明之处。" 说了这么多,我们使用RESTEasy做一个项目玩玩看。首先创造一个maven1的web 项目 Java代码 1.mvn archetype:create -DgroupId=org.bluedash \ 2. 3.-DartifactId=try-resteasy -DarchetypeArtifactId=maven-archetype -webapp 准备工作完成后,我们就可以开始写代码了,假设我们要撰写一个处理客户信息的Web Service,它包含两个功能:一是添加用户信息;二是通过用户Id,获取某个用户的信息,而交互的方式是标准的WebService形式,数据交换格式为XML。假设一条用户包含两个属性:Id和用户名。那么我们设计交换的XML数据如下: Java代码 1. 2. 1 3. liweinan 4. 首先要做的就是把上述格式转换成XSD2,网上有在线工具可以帮助我们完成这一工作3,在此不详细展开。使用工具转换后,生成如下xsd文件: Java代码 1. 2. 4.

mybatis中文版教程

MyBatis Spring1.0.0-RC3 参考文档 MyBatis 社区(https://www.360docs.net/doc/ad8714844.html,) Copyright ? 2010 本文档的拷贝仅允许您个人使用或分发给其他用户,但是不能收取任何费用,后期的发布无论是印刷版或电子版,也会进行版权声明。 本文档由南磊(nanlei1987@https://www.360docs.net/doc/ad8714844.html,)翻译

目录 第一章介绍 (3) 1.1 整合动机 (3) 1.2 要求 (3) 1.3 感谢 (3) 第二章入门 (4) 2.1 安装 (4) 2.2 快速创建 (4) 第三章SqlSessionFactoryBean (6) 3.1 创建 (6) 3.2 属性 (6) 第四章事务 (8) 4.1 标准配置 (8) 4.2 容器管理事务 (8) 第五章使用SqlSession (9) 5.1 SqlSessionSupport (9) 5.2 SqlSessionTemplate (9) 第六章MapperFactoryBean (11) 6.1 创建 (11) 6.2 注入映射器 (11) 6.3 自动配置 (12) 第七章使用MyBatis API (13) 第八章示例代码 (14)

第一章介绍 1.1 整合动机 正如第二版,Spring仅支持iBatis2。那么我们就想将MyBatis3的支持加入到Spring3.0(参考Spring的Jira的问题)中。不幸的是,Spring 3.0的开发在MyBatis 3.0官方发布前就结束了。因为Spring开发团队不想发布一个基于非发行版的MyBatis的整合支持,那么Spring 官方的支持就不得不等到至少3.1版本了。要在Spring中支持MyBatis,MyBatis社区认为现在应该是自己团结贡献者和有兴趣的人一起来开始进行Spring和MyBatis整合的时候了。 这个小类库就来创建丢失的粘贴Spring和MyBtatis这两个流行框架的胶水。减少用户不得不来配置MyBatis和Spring 3.X上下文环境的样板和冗余代码。它还透明地增加了Spring 对MyBatis事务的支持。 1.2 要求 在开始阅读本手册之前,很重要的一点是你要熟悉Spring和MyBatis这两个框架还有和它们有关的术语,本手册不会提供二者的背景内容,基本安装和配置教程。 和MyBatis一样,MyBatis-Spring也需要Java 5或更高版本。 1.3 感谢 非常感谢那些使得本项目成为现实的人们(按字母顺序排序)。Eduardo Macarron,Hunter Presnall和Putthibong Boonbong的编码工作,测试和文档修改;Andrius Juozapaitis,Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并把他们带入项目之中。没有他们的努力,这个项目是不可能存在的。

MyBatis学习 之三动态SQL语句

MyBatis学习之三动态SQL语句 三、动态SQL语句 MyBatis学习之一、MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习之二、SQL语句映射文件(1)resultMap MyBatis学习之二、SQL语句映射文件(2)增删改查、参数、缓存 MyBatis学习之三、动态SQL语句 MyBatis学习之四、MyBatis配置文件 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。使用Oracle的序列、mysql的函数生成Id。这时我们可以使用动态sql。 下文均采用mysql语法和函数(例如字符串链接函数CONCAT)。 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列、在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键。使用myBatis的selectKey标签可以实现这个效果。 下面例子,使用mysql数据库自定义函数nextval('student'),用来生成一个key,并把他设置到传入的实体类中的studentId属性上。所以在执行完此方法后,边可以通过这个实体类获取生成的key。 select nextval('student') INSERT INTO STUDENT_TBL(STUDENT_ID, STUDENT_NAME, STUDENT_SEX, STUDENT_BIRTHDAY, STUDENT_PHOTO, CLASS_ID, PLACE_ID) V ALUES (#{studentId}, #{studentName}, #{studentSex}, #{studentBirthday}, #{studentPhoto, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler}, #{classId}, #{placeId}) 调用接口方法,和获取自动生成key StudentEntity entity = new StudentEntity(); entity.setStudentName("黎明你好"); entity.setStudentSex(1); entity.setStudentBirthday(DateUtil.parse("1985-05-28")); entity.setClassId("20000001"); entity.setPlaceId("70000001"); this.dynamicSqlMapper.createStudentAutoKey(entity); System.out.println("新增学生ID: " + entity.getStudentId()); selectKey语句属性配置细节: 属性描述取值keyProper ty selectKey 语句生成结果需要设置的属性。 resultTyp e 生成结果类型,MyBatis 允许使用基本的数据类型,包括String 、int 类型。 order 1:BEFORE,会先选择主键,然后设置keyProperty,再执行insert 语句; 2:AFTER,就先运行insert 语句再运行selectKey 语句。 BEFORE AFTER

ERDAS IMAGINE快速入门

实验一ERDAS IMAGINE快速入门 一、背景知识 ERDAS IMAGINE是美国ERDAS公司开发的遥感图像处理系统,后来被Leica公司合并。它以其先进的图像处理技术,友好、灵活的用户界面和操作方式,面向广阔应用领域的产品模块,服务于不同层次用户的模型开发工具以及高度的RS/GIS(遥感图像处理和地理信息系统)集成功能,为遥感及相关应用领域的用户提供了内容丰富而功能强大的图像处理工具,代表了遥感图像处理系统未来的发展趋势。 ERDAS IMAGINE是以模块化的方式提供给用户的,可使用户根据自己的应用要求、资金情况合理地选择不同功能模块及其不同组合,对系统进行剪裁,充分利用软硬件资源,并最大限度地满足用户的专业应用要求,目前的最高版本为9.1。ERDAS IMAGINE面向不同需求的用户,对于系统的扩展功能采用开放的体系结构以IMAGINE Essentials、IMAGINE Advantage、IMAGINE Professional的形式为用户提供了低、中、高三档产品架构,并有丰富的功能扩展模块供用户选择,使产品模块的组合具有极大的灵活性。 ?IMAGINE Essentials级:是一个花费极少的,包括有制图和可视化核心功能的影像工具软件。该级功能的重点在于遥感图像的输入、输出与显示;图像库的 建立与查询管理;专题制图;简单几何纠正与非监督分类等。 ?IMAGINE Advantage级:是建立在IMAGINE Essential级基础之上的,增加了更丰富的图像光栅GIS和单片航片正射校正等强大功能的软件。IMAGINE Advantag提供了灵活可靠的用于光栅分析,正射校正,地形编辑及先进的影像 镶嵌工具。简而言之,IMAGINE Advantage是一个完整的图像地理信息系统 (Imaging GIS)。 ?IMAGINE Professional级:是面向从事复杂分析,需要最新和最全面处理工具,

黑马程序员mybatis教程第二天:延迟加载

延迟加载 什么是延迟加载 resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 需求: 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。 使用association实现延迟加载 需求 查询订单并且关联查询用户信息 mapper.xml 需要定义两个mapper的方法对应的statement。 1、只查询订单信息 SELECT * FROM orders 在查询订单的statement中使用association去延迟加载(执行)下边的satatement(关联查询用户信息) 2、关联查询用户信息 通过上边查询到的订单信息中user_id去关联查询用户信息

使用UserMapper.xml中的findUserById 上边先去执行findOrdersUserLazyLoading,当需要去查询用户的时候再去执行findUserById,通过resultMap的定义将延迟加载执行配置起来。 延迟加载resultMap 使用association中的select指定延迟加载去执行的statement的id。

mybatis教程从入门到精通

mybatis教程从入门到精通 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到sessionfactory. 2. 由sessionfactory 产生session 3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为MyBaits 的dynamic web project 1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将mybatis- 3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到web工程的lib 目录. 3. 创建mysql 测试数据库和用户表,注意,这里采用的是utf-8 编码 创建用户表,并插入一条测试数据 程序代码程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'); 到此为止,前期准备工作就完成了。下面开始真正配置mybatis项目了。 1. 在MyBatis 里面创建两个源码目录,分别为src_user,test_src, 用如下方式建立,鼠标右键点击JavaResource. 2. 设置mybatis 配置文件:Configuration.xml, 在src_user目录下建立此文件,内容如下:

MyBatis基础知识

1、#{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换。 #{}是sql的参数占位符,Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; ${}是Properties文件中的变量占位符,Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。 2、MyBatis是如何进行分页的? Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。 分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。 举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10 3、在mapper中如何传递多个参数? 第一种:使用#{0},#{1}... mapper层: public selectUser(String username, String password); mapper.xml层: //对应的xml,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。 第二种:使用@param注解: mapper层: public selectUser(@param("username")String username,@param("password")String password); mapper.xml层: 4、Mybatis都有哪些Executor执行器?它们之间的区别是什么? Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。 SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。

二次开发入门MapBasic--MapInfo教程

MapInfo教程--二次开发入门摘要:MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。 一、利用MapBasic开发 MapBasic是Mapinfo自带的二次开发语言,它是一种类似Basic的解释性语言,利用MapBasic编程生成的*.mbx文件能在Mapinfo软件平台上运行,早期的Mapinfo二次开发都是基于MapBasic进行的。MapBasic学起来容易,用起来却束缚多多,无法实现较复杂的自定义功能,用它来建立用户界面也很麻烦,从现在角度看,MapBasic比较适合用于扩展Mapinfo功能。 二、利用OLE自动化开发 1. 建立Mapinfo自动化对象 基于OLE自动化的开发就是编程人员通过标准化编程工具如VC、VB、Delphi、PB等建立自动化控制器,然后通过传送类似MapBasic语言的宏命令对Mapinfo进行操作。实际上是将Mapinfo用作进程外服务器,它在后台输出OLE自动化对象,供控制器调用它的属性和方法。 OLE自动化开发的首要一步就是建立Mapinfo自动化对象,以Delphi为例(后面都是如此),你可设定一个Variant类型的全程变量代表OLE自动化对象,假设该变量名为olemapinfo,那么有: oleMapinfo := CreateOleObject('Mapinfo.Application') 一旦OLE自动化对象建立,也就是后台Mapinfo成功启动,你就可以使用该对象的Do方法向Mapinfo发送命令,如: oleMapinfo.Do('Set Next Document Parent' + WinHand + 'Style 1') 这一命令使Mapinfo窗口成为应用程序的子窗口,WinHand是地图窗口句柄,style 1 是没有边框的窗口类型。你还可以使用自动化对象的Eval方法返回MapBasic表达式的值,如下面语句返回当前所打开的表数: TablesNum:=olemapinfo.eval('NumTables()') 你也可以直接调用Mapinfo菜单或按钮命令对地图窗口进行操作,如地图放大显示:oleMapinfo.RunMenuCommand(1705) 2. 建立客户自动化对象触发CallBack 基于OLE自动化开发的难点在于所谓的CallBack,Mapinfo服务器对客户程序地图窗口的反应叫CallBack,假如你在地图窗口中移动地图目标,Mapinfo能返回信息告诉你地图目标当前的坐标位置,这就是CallBack功能。如果你想定制自己的地图操作工具或菜单命令,你必须依靠CallBack。但是想捕获CallBack信息,你的客户程序必须具备接收CallBack信息的能力,为此需要在客户程序中定义自己的OLE自动化对象,如: //定义界面 IMyCallback = interface(IDispatch) ['{2F4E1FA1-6BC7-11D4-9632-913682D1E638}'] function WindowContentsChanged(var WindowID: Integer):SCODE;safecall; function SetStatusText(var StatusText: WideString): SCODE; safecall; //定义界面实现

mybatis-3-mapper

>

Maya从入门到精通经典讲解

Maya绝技83式从入门到精通 第1招、自制MAY A启动界面 在安装目录下的BIN文件夹中的MayaRes.dll文件,用Resource Hacker打开。在软件的目录树中找到“位图”下MAY ASTARTUPIMAGE.XPM并保存。图片分辨率要一致,然后选择替换位图,把自己修改的图片替换保存,即可。 第2招、控制热盒的显示 MAYA中的热盒可以按着空格键不放,就可以显示出来。并且按下鼠标左键选择Hotbox Style 中的Zones Only可以不让热盒弹出。如果选择Center Zone Only可以连AW的字样也不会出现。完全恢复的快捷键是ALT+M。 第3招、创建多彩的MAY A界面 MAYA默认界面色彩是灰色的,如果你想尝试一下其他的色彩界面,可以自行修改。方法是选择Windows/Settings/Preferences/Colors... 第4招、创建自己的工具架 把自己最常用的工具放置在工具架的方法是,按下Ctrl+Shift的同时,点选命令,该命令就可以添加到当前的工具架上了。 第5招、自定义工具架图标 我们将一行MEL添加到工具架上的时候,图标出现MEL字样,不容易区分,此时可以选择Windows/Settings/Preferences/Shelves选择新添加的命令,单击Change Image按钮,选择要替换的图片,选择Save All Shelves按钮,就替换成功。 第6招、自定义标记菜单 执行Windows/Settings/Preferences/Marking Menus设置相关参数,然后在Settings下符合自己操作习惯来设置参数,最后单击Save即可。 第7招、自定义物体属性 如果想添加一个属性,并且把其他数据进行设置表达式或者驱动关键帧,就必须在属性对话框中点击Attributes/add... 第8招、选择并且拖动 打开Windows/Settings/Preferences在Selection中,勾选Click Drag Select然后点击Save这样就可以了。 第9招、界面元素隐藏或显示 执行Display/UI Elements下的Show UI Elements或者Hide UI Elements可以对于全界面下元素显示或者隐藏。 第10招、改变操纵器的显示大小与粗细 打开Windows/Settings/Preferences在Manipulators中修改Line Size可以改变操纵器的显示粗细,按下小键盘的“+”“-”可以改变操纵器的显示大小。

SSM基础框架搭建(SpringMVC+Spring+Mybatis)

SSM基础框架搭建(SpringMVC+Spring+Mybatis) SSM框架简述 到现在用了SSM框架也有一段时间了,对于基础的使用已经基本习惯,这段时间也多多少少搭了很多遍基础框架,当然每一次的搭建都会比原先搭建的东西更多些,也会更加完善,我相信大家也会从搭建的过程中成长去学到很多东西,SSM框架网上也有很多教程,不过我相信每个编写以及阅读的人总会从相似的文章中学到不同的东西. SSM框架基础概念 Spring 这里不得不说Spring非常强大,Spring拥有这IOC(控制反转,依赖注入)和AOP(面向切面编程)这两个强大的功能,这两个功能使框架足够的解耦,通过工厂模式和bean的配置完成对象的注入并且由bean生成的对象是单例的 SpringMVC SpringMVC分离了控制器,验证器,Servlet分发器,模型对象等 Mybatis Mybatis解除了程序与代码的耦合度,在一定程度上简化了sql的管理,只需要在XML中进行相应SQL的编写即可,Mybatis提供了相应的映射,配置起来更加容易 SSM基础框架搭建 这里就直接介绍SSM框架如何搭建了,至于环境配置和MAVEN项目的创建可以参考我的博客,也可以参考环境搭建,MAVEN项目搭建,下面开始搭建的教程,可能是对于上文链接博客的整合的完善与一些细微错误的纠正吧。 引入相关的JRA包 4.0.2.RELEASE 3.2.6 1.7.7 1.2.17 junit junit 4.11

WGCNA新手入门笔记2(含代码和数据)

WGCNA新手入门笔记2(含代码和数据) 上次我们介绍了WGCNA的入门(WGCNA新手入门笔记(含代码和数据)),大家在安装WGCNA包的时候,可能会遇到GO.db这个包安装不了的问题。主要问题应该是出在电脑的防火墙,安装时请关闭防火墙。 如果还有问题,请先单独安装AnnotationDbi这个包,biocLite("AnnotationDbi") 再安装GO.db,并尝试从本地文件安装该包。 如果还有问题,请使用管理员身份运行R语言,尝试上述步骤。 另外如果大家问题解决了请在留言处留个言,告知大家是在哪一步解决了问题,谢谢!因为本人没有进行单因素实验,不知道到底是哪个因素改变了实验结果。。。 今天给大家过一遍代码。网盘中有代码和数据。 链接:https://www.360docs.net/doc/ad8714844.html,/s/1bpvu9Dt 密码:w7g4 ##导入数据## library(WGCNA)options(stringsAsFactors = FALSE)enableWGCNAThreads()

enableWGCNAThreads()是指允许R语言程序最大线程运行,像我这电脑是4核CPU的,那么就能用上3核: 当然如果当前电脑没别的事,也可以满负荷运作 samples=read.csv( 'Sam_info.txt',sep = 't',https://www.360docs.net/doc/ad8714844.html,s = 1)expro=read.csv( 'ExpData.txt',sep = 't',https://www.360docs.net/doc/ad8714844.html,s = 1)dim(expro) 这部分代码是为了让R语言读取外部数据。当然了在读取数据之前首先改变一下工作目录,这一点在周二的文章中提过了。R语言读取外部数据的方式常用的有read.table和read.csv,这里用的是read.csv,想要查看某一函数的具体参数,可以用?函数名查看,比如: 大家可以注意到read.table和read.csv中header参数的默认值是不同的,header=true表示第一行是标题,第二行才是数据,header=false则表示第一行就是数据,没有标题。##筛选方差前25%的基因## m.vars=apply(expro, 1,var)expro.upper=expro[which(m.vars>quantile(m.vars, probs = seq( 0, 1, 0.25))[ 4]),]dim(expro.upper)datExpr= as.data.frame(t(expro.upper));nGenes = ncol(datExpr)nSamples = nrow(datExpr) 这一步是为了减少运算量,因为一个测序数据可能会有好几

相关文档
最新文档