幻灯片 1

Size: px
Start display at page:

Download "幻灯片 1"

Transcription

1 3

2 内容概要 一 MyBatis 简介二 MyBatis-HelloWorld 三 MyBatis- 全局配置文件四 MyBatis- 映射文件五 MyBatis- 动态 SQL 六 MyBatis- 缓存机制七 MyBatis-Spring 整合八 MyBatis- 逆向工程九 MyBatis- 工作原理十 MyBatis- 插件开发

3 一 MyBatis 简介 MyBatis 是支持定制化 SQL 存储过程以及高级映射的优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的 XML 或注解用于配置和原始映射, 将接口和 Java 的 POJO(Plain Old Java Objects, 普通的 Java 对象 ) 映射成数据库中的记录.

4 MyBatis 历史 原是 Apache 的一个开源项目 ibatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code, 随着开发团队转投 Google Code 旗下, ibatis3.x 正式更名为 MyBatis, 代码于 2013 年 11 月迁移到 Github( 下载地址见后 ) ibatis 一词来源于 internet 和 abatis 的组合, 是一个基于 Java 的持久层框架 ibatis 提供的持久层框架包括 SQL Maps 和 Data Access Objects (DAO)

5 为什么要使用 MyBatis? MyBatis 是一个半自动化的持久化层框架 JDBC SQL 夹在 Java 代码块里, 耦合度高导致硬编码内伤 维护不易且实际开发需求中 sql 是有变化, 频繁修改的情况多见 Hibernate 和 JPA 长难复杂 SQL, 对于 Hibernate 而言处理也不容易 内部自动生产的 SQL, 不容易做特殊优化 基于全映射的全自动框架, 大量字段的 POJO 进行部分映射时比较困难 导致数据库性能下降 对开发人员而言, 核心 sql 还是需要自己优化 sql 和 java 编码分开, 功能边界清晰, 一个专注业务 一个专注数据

6 去哪里找 MyBatis?

7

8

9 二 MyBatis-HelloWorld HelloWorld 简单版 创建一张测试表 创建对应的 javabean 创建 mybatis 配置文件,sql 映射文件 测试

10 MyBatis 操作数据库 1 创建 MyBatis 全局配置文件 MyBatis 的全局配置文件包含了影响 MyBatis 行为甚深的设置 (settings) 和属性 (properties) 信息 如数据库连接池信息等 指导着 MyBatis 进行工作 我们可以参照官方文件的配置示例 2 创建 SQL 映射文件 映射文件的作用就相当于是定义 Dao 接口的实现类如何工作 这也是我们使用 MyBatis 时编写的最多的文件

11 测试 1 根据全局配置文件, 利用 SqlSessionFactoryBuilder 创建 SqlSessionFactory 2 使用 SqlSessionFactory 获取 sqlsession 对象 一个 SqlSession 对象代表和数据库的一次会话

12 使用 SqlSession 根据方法 id 进行操作

13 HelloWorld- 接口式编程 创建一个 Dao 接口 修改 Mapper 文件 测试

14 使用 SqlSession 获取映射器进行操作

15 SqlSession SqlSession 的实例不是线程安全的, 因此是不能被共享的 SqlSession 每次使用完成后需要正确关闭, 这个关闭操作是必须的 SqlSession 可以直接调用方法的 id 进行数据库操作, 但是我们一般还是推荐使用 SqlSession 获取到 Dao 接口的代理类, 执行代理对象的方法, 可以更安全的进行类型检查操作

16 三 MyBatis- 全局配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置 (settings) 和属性 (properties) 信息 文档的顶层结构如下 : configuration 配置 properties 属性 settings 设置 typealiases 类型命名 typehandlers 类型处理器 objectfactory 对象工厂 plugins 插件 environments 环境 environment 环境变量 transactionmanager 事务管理器 datasource 数据源 databaseidprovider 数据库厂商标识 mappers 映射器

17 在 Eclipse 中引入 XML 的 dtd 约束文件, 方便编写 XML 的时候有提示

18 properties 属性 如果属性在不只一个地方进行了配置, 那么 MyBatis 将按照下面的顺序来加载 : 在 properties 元素体内指定的属性首先被读取 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件, 并覆盖已读取的同名属性 最后读取作为方法参数传递的属性, 并覆盖已读取的同名属性

19 settings 设置 这是 MyBatis 中极为重要的调整设置, 它们会改变 MyBatis 的运行时行为

20 typealiases 别名处理器 类型别名是为 Java 类型设置一个短的名字, 可以方便我们引用某个类 类很多的情况下, 可以批量设置别名这个包下的每一个类创建一个默认的别名, 就是简单类名小写 注解为其指定一个别名

21 值得注意的是,MyBatis 已经为许多常见的 Java 类型内建了相应的类型别名 它们都是大小写不敏感的, 我们在起别名的时候千万不要占用已有的别名 别名 _byte _long _short _int _integer _double _float _boolean 映射的类型 byte long short int int double float boolean 别名 映射的类型 别名 映射的类型 string String date Date byte Byte decimal BigDecimal long Long bigdecimal BigDecimal short Short object Object int Integer map Map integer Integer hashmap HashMap double Double list List float Float arraylist ArrayList boolean Boolean collection Collection iterator Iterator

22 typehandlers 类型处理器 无论是 MyBatis 在预处理语句 (PreparedStatement) 中设置一个参数时, 还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型 类型处理器 Java 类型 JDBC 类型 BooleanTypeHandler java.lang.boolean, boolean 数据库兼容的 BOOLEAN ByteTypeHandler java.lang.byte, byte 数据库兼容的 NUMERIC 或 BYTE ShortTypeHandler java.lang.short, short 数据库兼容的 NUMERIC 或 SHORT INTEGER IntegerTypeHandler java.lang.integer, int 数据库兼容的 NUMERIC 或 INTEGER LongTypeHandler java.lang.long, long 数据库兼容的 NUMERIC 或 LONG INTEGER FloatTypeHandler java.lang.float, float 数据库兼容的 NUMERIC 或 FLOAT DoubleTypeHandler java.lang.double, double 数据库兼容的 NUMERIC 或 DOUBLE BigDecimalTypeHandler java.math.bigdecimal 数据库兼容的 NUMERIC 或 DECIMAL StringTypeHandler java.lang.string CHAR, VARCHAR

23 日期类型的处理 日期和时间的处理,JDK1.8 以前一直是个头疼的问题 我们通常使用 JSR310 规范领导者 Stephen Colebourne 创建的 Joda-Time 来操作 1.8 已经实现全部的 JSR310 规范了 日期时间处理上, 我们可以使用 MyBatis 基于 JSR310(Date and Time API) 编写的各种日期时间类型处理器 MyBatis3.4 以前的版本需要我们手动注册这些处理器, 以后的版本都是自动注册的

24

25 自定义类型处理器 我们可以重写类型处理器或创建自己的类型处理器来处理不支持的或非标准的类型 步骤 : 1) 实现 org.apache.ibatis.type.typehandler 接口或者继承 org.apache.ibatis.type.basetypehandler 2) 指定其映射某个 JDBC 类型 ( 可选操作 ) 3) 在 mybatis 全局配置文件中注册

26 plugins 插件 插件是 MyBatis 提供的一个非常强大的机制, 我们可以通过插件来修改 MyBatis 的一些核心行为 插件通过动态代理机制, 可以介入四大对象的任何一个方法的执行 后面会有专门的章节我们来介绍 mybatis 运行原理以及插件 Executor (update, query, flushstatements, commit, rollback, gettransaction, close, isclosed) ParameterHandler (getparameterobject, setparameters) ResultSetHandler (handleresultsets, handleoutputparameters) StatementHandler (prepare, parameterize, batch, update, query)

27 environments 环境 MyBatis 可以配置多种环境, 比如开发 测试和生产环境需要有不同的配置 每种环境使用一个 environment 标签进行配置并指定唯一标识符 可以通过 environments 标签中的 default 属性指定一个环境的标识符来快速的切换环境

28 environment- 指定具体环境 id: 指定当前环境的唯一标识 transactionmanager 和 datasource 都必须有

29 transactionmanager type: JDBC MANAGED 自定义 JDBC: 使用了 JDBC 的提交和回滚设置, 依赖于从数据源得到的连接来管理事务范围 JdbcTransactionFactory MANAGED: 不提交或回滚一个连接 让容器来管理事务的整个生命周期 ( 比如 JEE 应用服务器的上下文 ) ManagedTransactionFactory 自定义 : 实现 TransactionFactory 接口,type= 全类名 / 别名

30 datasource type: UNPOOLED POOLED JNDI 自定义 UNPOOLED: 不使用连接池, UnpooledDataSourceFactory POOLED: 使用连接池, PooledDataSourceFactory JNDI: 在 EJB 或应用服务器这类容器中查找指定的数据源 自定义 : 实现 DataSourceFactory 接口, 定义数据源的获取方式 实际开发中我们使用 Spring 管理数据源, 并进行事务控制的配置来覆盖上述配置

31 databaseidprovider 环境 MyBatis 可以根据不同的数据库厂商执行不同的语句 Type: DB_VENDOR 使用 MyBatis 提供的 VendorDatabaseIdProvider 解析数据库厂商标识 也可以实现 DatabaseIdProvider 接口来自定义 Property-name: 数据库厂商标识 Property-value: 为标识起一个别名, 方便 SQL 语句使用 databaseid 属性引用

32 DB_VENDOR 会通过 DatabaseMetaData#getDatabaseProductName() 返回的字符串进行设置 由于通常情况下这个字符串都非常长而且相同产品的不同版本会返回不同的值, 所以最好通过设置属性别名来使其变短 MyBatis 匹配规则如下 : 1 如果没有配置 databaseidprovider 标签, 那么 databaseid=null 2 如果配置了 databaseidprovider 标签, 使用标签配置的 name 去匹配数据库信息, 匹配上设置 databaseid= 配置指定的值, 否则依旧为 null 3 如果 databaseid 不为 null, 他只会找到配置 databaseid 的 sql 语句 4 MyBatis 会加载不带 databaseid 属性和带有匹配当前数据库 databaseid 属性的所有语句 如果同时找到带有 databaseid 和不带 databaseid 的相同语句, 则后者会被舍弃

33 mapper 映射 mapper 逐个注册 SQL 映射文件 或者使用批量注册 : 这种方式要求 SQL 映射文件名必须和接口名相同并且在同一目录下

34 四 MyBatis- 映射文件 映射文件指导着 MyBatis 如何进行数据库增删改查, 有着非常重要的意义 ; cache 命名空间的二级缓存配置 cache-ref 其他命名空间缓存配置的引用 resultmap 自定义结果集映射 parametermap 已废弃! 老式风格的参数映射 sql 抽取可重用语句块 insert 映射插入语句 update 映射更新语句 delete 映射删除语句 select 映射查询语句

35 insert update delete 元素

36 主键生成方式 若数据库支持自动生成主键的字段 ( 比如 MySQL 和 SQL Server), 则可以设置 usegeneratedkeys= true, 然后再把 keyproperty 设置到目标属性上

37 主键生成方式 而对于不支持自增型主键的数据库 ( 例如 Oracle), 则可以使用 selectkey 子元素 : selectkey 元素将会首先运行,id 会被设置, 然后插入语句会被调用

38 selectkey

39 参数 (Parameters) 传递 单个参数 可以接受基本类型, 对象类型, 集合类型的值 这种情况 MyBatis 可直接使用这个参数, 不需要经过任何处理 多个参数 任意多个参数, 都会被 MyBatis 重新包装成一个 Map 传入 Map 的 key 是 param1,param2,0,1, 值就是参数的值 命名参数 起一个名字,MyBatis 就会将这些参数封装进 map 中,key 就是我们自己指定的名字 POJO 当这些参数属于我们业务 POJO 时, 我们直接传递 POJO Map 我们也可以封装多个参数为 map, 直接传递

40 参数处理 参数也可以指定一个特殊的数据类型 : javatype 通常可以从参数对象中来去确定 如果 null 被当作值来传递, 对于所有可能为空的列, jdbctype 需要被设置 对于数值类型, 还可以设置小数点后保留的位数 : mode 属性允许指定 IN,OUT 或 INOUT 参数 如果参数为 OUT 或 INOUT, 参数对象属性的真实值将会被改变, 就像在获取输出参数时所期望的那样

41 参数处理 参数位置支持的属性 javatype jdbctype mode numericscale resultmap typehandler jdbctypename expression 实际上通常被设置的是 : 可能为空的列名指定 jdbctype #{key}: 获取参数的值, 预编译到 SQL 中 安全 ${key}: 获取参数的值, 拼接到 SQL 中 有 SQL 注入问题 ORDER BY ${name}

42 select 元素 Select 元素来定义查询操作 Id: 唯一标识符 用来引用这条语句, 需要和接口的方法名一致 parametertype: 参数类型 可以不传,MyBatis 会根据 TypeHandler 自动推断 resulttype: 返回值类型 别名或者全类名, 如果返回的是集合, 定义集合中元素的类型 不能和 resultmap 同时使用

43

44 自动映射 1 全局 setting 设置 automappingbehavior 默认是 PARTIAL, 开启自动映射的功能 唯一的要求是列名和 javabean 属性名一致 如果 automappingbehavior 设置为 null 则会取消自动映射 数据库字段命名规范,POJO 属性符合驼峰命名法, 如 A_COLUMN acolumn, 我们可以开启自动驼峰命名规则映射功能,mapUnderscoreToCamelCase=true 2 自定义 resultmap, 实现高级结果集映射

45 resultmap constructor - 类在实例化时, 用来注入结果到构造方法中 idarg - ID 参数 ; 标记结果作为 ID 可以帮助提高整体效能 arg - 注入到构造方法的一个普通结果 id 一个 ID 结果 ; 标记结果作为 ID 可以帮助提高整体效能 result 注入到字段或 JavaBean 属性的普通结果 association 一个复杂的类型关联 ; 许多结果将包成这种类型 嵌入结果映射 结果映射自身的关联, 或者参考一个 collection 复杂类型的集 嵌入结果映射 结果映射自身的集, 或者参考一个 discriminator 使用结果值来决定使用哪个结果映射 case 基于某些值的结果映射 嵌入结果映射 这种情形结果也映射它本身, 因此可以包含很多相同的元素, 或者它可以参照一个外部的结果映射

46 id & result id 和 result 映射一个单独列的值到简单数据类型 ( 字符串, 整型, 双精度浮点数, 日期等 ) 的属性或字段

47 association 复杂对象映射 POJO 中的属性可能会是一个对象 我们可以使用联合查询, 并以级联属性的方式封装对象 使用 association 标签定义对象的封装规则

48 association- 嵌套结果集

49 association- 分段查询 select: 调用目标的方法查询当前属性的值 column: 将指定列的值传入目标方法

50 association- 分段查询 & 延迟加载 开启延迟加载和属性按需加载 旧版本的 MyBatis 需要额外的支持包 asm jar cglib jar

51 Collection- 集合类型 & 嵌套结果集

52 Collection- 分步查询 & 延迟加载

53 扩展 - 多列值封装 map 传递 分步查询的时候通过 column 指定, 将对应的列的数据传递过去, 我们有时需要传递多列数据 使用 {key1=column1,key2=column2 } 的形式 association 或者 collection 标签的 fetchtype=eager/lazy 可以覆盖全局的延迟加载策略, 指定立即加载 (eager) 或者延迟加载 (lazy)

54 五 MyBatis- 动态 SQL 动态 SQL 是 MyBatis 强大特性之一 极大的简化我们拼装 SQL 的操作 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似 MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作 if choose (when, otherwise) trim (where, set) foreach

55 if

56 choose (when, otherwise)

57 where trim (where, set)

58 set

59 trim

60 foreach 动态 SQL 的另外一个常用的必要操作是需要对一个集合进行遍历, 通常是在构建 IN 条件语句的时候 当迭代列表 集合等可迭代对象或者数组时 index 是当前迭代的次数,item 的值是本次迭代获取的元素 当使用字典 ( 或者 Map.Entry 对象的集合 ) 时 index 是键,item 是值

61 bind bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文 比如 :

62 Multi-db vendor support 若在 mybatis 配置文件中配置了 databaseidprovider, 则可以使用 _databaseid 变量, 这样就可以根据不同的数据库厂商构建特定的语句

63 OGNL( Object Graph Navigation Language ) 对象图导航语言, 这是一种强大的表达式语言, 通过它可以非常方便的来操作对象属性 类似于我们的 EL,SpEL 等 访问对象属性 : person.name 调用方法 : person.getname() 调用静态属性 / 调用构造方法 : new com.atguigu.bean.person( admin ).name 运算符 : +,-*,/,% 逻辑运算符 : in,not in,>,>=,<,<=,==,!= 注意 :xml 中特殊符号如,>,< 等这些都需要使用转义字符 访问集合伪属性 : 类型伪属性伪属性对应的 Java 方法 List Set Map size isempty List/Set/Map.size(),List/Set/Map.isEmpty() List Set iterator List.iterator() Set.iterator() Map keys values Map.keySet() Map.values() Iterator next hasnext Iterator.next() Iterator.hasNext()

64 六 MyBatis- 缓存机制 MyBatis 包含一个非常强大的查询缓存特性, 它可以非常方便地配置和定制 缓存可以极大的提升查询效率 MyBatis 系统中默认定义了两级缓存 一级缓存和二级缓存 1 默认情况下, 只有一级缓存 (SqlSession 级别的缓存, 也称为本地缓存 ) 开启 2 二级缓存需要手动开启和配置, 他是基于 namespace 级别的缓存 3 为了提高扩展性 MyBatis 定义了缓存接口 Cache 我们可以通过实现 Cache 接口来自定义二级缓存

65 一级缓存 一级缓存 (local cache), 即本地缓存, 作用域默认为 sqlsession 当 Session flush 或 close 后, 该 Session 中的所有 Cache 将被清空 本地缓存不能被关闭, 但可以调用 clearcache() 来清空本地缓存, 或者改变缓存的作用域. 在 mybatis3.1 之后, 可以配置本地缓存的作用域. 在 mybatis.xml 中配置

66 一级缓存演示 & 失效情况 同一次会话期间只要查询过的数据都会保存在当前 SqlSession 的一个 Map 中 key:hashcode+ 查询的 SqlId+ 编写的 sql 查询语句 + 参数 一级缓存失效的四种情况 1 不同的 SqlSession 对应不同的一级缓存 2 同一个 SqlSession 但是查询条件不同 3 同一个 SqlSession 两次查询期间执行了任何一次增删改操作 4 同一个 SqlSession 两次查询期间手动清空了缓存

67 二级缓存 二级缓存 (second level cache), 全局作用域缓存 二级缓存默认不开启, 需要手动配置 MyBatis 提供二级缓存的接口以及实现, 缓存实现要求 POJO 实现 Serializable 接口 二级缓存在 SqlSession 关闭或提交之后才会生效 使用步骤 1 全局配置文件中开启二级缓存 <setting name="cacheenabled" value="true"/> 2 需要使用二级缓存的映射文件处使用 cache 配置缓存 <cache /> 3 注意 :POJO 需要实现 Serializable 接口

68 缓存相关属性 eviction= FIFO : 缓存回收策略 : LRU 最近最少使用的 : 移除最长时间不被使用的对象 FIFO 先进先出 : 按对象进入缓存的顺序来移除它们 SOFT 软引用 : 移除基于垃圾回收器状态和软引用规则的对象 WEAK 弱引用 : 更积极地移除基于垃圾收集器状态和弱引用规则的对象 默认的是 LRU flushinterval: 刷新间隔, 单位毫秒 默认情况是不设置, 也就是没有刷新间隔, 缓存仅仅调用语句时刷新 size: 引用数目, 正整数 代表缓存最多可以存储多少个对象, 太大容易导致内存溢出 readonly: 只读,true/false true: 只读缓存 ; 会给所有调用者返回缓存对象的相同实例 因此这些对象不能被修改 这提供了很重要的性能优势 false: 读写缓存 ; 会返回缓存对象的拷贝 ( 通过序列化 ) 这会慢一些, 但是安全, 因此默认是 false

69 缓存有关设置 1 全局 setting 的 cacheenable: 配置二级缓存的开关 一级缓存一直是打开的 2 select 标签的 usecache 属性 : 配置这个 select 是否使用二级缓存 一级缓存一直是使用的 3 sql 标签的 flushcache 属性 : 增删改默认 flushcache=true sql 执行以后, 会同时清空一级和二级缓存 查询默认 flushcache=false 4 sqlsession.clearcache(): 只是用来清除一级缓存 5 当在某一个作用域 ( 一级缓存 Session/ 二级缓存 Namespaces) 进行了 C/U/D 操作后, 默认该作用域下所有 select 中的缓存将被 clear

70 第三方缓存整合 EhCache 是一个纯 Java 的进程内缓存框架, 具有快速 精干等特点, 是 Hibernate 中默认的 CacheProvider MyBatis 定义了 Cache 接口方便我们进行自定义扩展 步骤 : 1 导入 ehcache 包, 以及整合包, 日志包 ehcache-core jar mybatis-ehcache jar slf4j-api jar slf4j-log4j jar 2 编写 ehcache.xml 配置文件 3 配置 cache 标签 <cache type="org.mybatis.caches.ehcache.ehcachecache"></cache> 参照缓存 : 若想在命名空间中共享相同的缓存配置和实例 可以使用 cache-ref 元素来引用另外一个缓存

71 当执行一条查询 SQL 时, 流程为从二级缓存中进行查询进入一级缓存中查询执行 JDBC 查询

72 七 MyBatis-Spring 整合 1 查看不同 MyBatis 版本整合 Spring 时使用的适配包 ; 2 下载整合适配包 MyBatis-Spring MyBatis Spring and to or higher or higher or higher or higher or higher or higher or higher or higher 3 官方整合示例,jpetstore

73 整合关键配置 <bean id="sqlsessionfactory" class="org.mybatis.spring.sqlsessionfactorybean"> <!-- 指定 mybatis 全局配置文件位置 --> <property name="configlocation" value="classpath:mybatis/mybatis-config.xml"></property> <!-- 指定数据源 --> <property name="datasource" ref="datasource"></property> <!--mapperlocations: 所有 sql 映射文件所在的位置 --> <property name="mapperlocations" value="classpath:mybatis/mapper/*.xml"></property> <!--typealiasespackage: 批量别名处理 --> <property name="typealiasespackage" value="com.atguigu.bean"></property> </bean> <!-- 自动的扫描所有的 mapper 的实现并加入到 ioc 容器中 --> <bean id="configure" class="org.mybatis.spring.mapper.mapperscannerconfigurer"> <! basepackage: 指定包下所有的 mapper 接口实现自动扫描并加入到 ioc 容器中 --> <property name="basepackage" value="com.atguigu.dao"></property> </bean>

74 八 MyBatis- 逆向工程 MyBatis Generator: 简称 MBG, 是一个专门为 MyBatis 框架使用者定制的代码生成器, 可以快速的根据表生成对应的映射文件, 接口, 以及 bean 类 支持基本的增删改查, 以及 QBC 风格的条件查询 但是表连接 存储过程等这些复杂 sql 的定义需要我们手工编写 官方文档地址 官方工程地址

75 MBG 使用 使用步骤 : 1) 编写 MBG 的配置文件 ( 重要几处配置 ) 1)jdbcConnection 配置数据库连接信息 2)javaModelGenerator 配置 javabean 的生成策略 3)sqlMapGenerator 配置 sql 映射文件生成策略 4)javaClientGenerator 配置 Mapper 接口的生成策略 5)table 配置要逆向解析的数据表 tablename: 表名 domainobjectname: 对应的 javabean 名 2) 运行代码生成器生成代码 注意 : Context 标签 targetruntime= MyBatis3 可以生成带条件的增删改查 targetruntime= MyBatis3Simple 可以生成基本的增删改查如果再次生成, 建议将之前生成的数据删除, 避免 xml 向后追加内容出现的问题

76 MBG 配置文件 <generatorconfiguration> <context id="db2tables" targetruntime="mybatis3"> // 数据库连接信息配置 <jdbcconnection driverclass="com.mysql.jdbc.driver" connectionurl="jdbc:mysql://localhost:3306/bookstore0629" userid="root" password="123456"> </jdbcconnection> //javabean 的生成策略 <javamodelgenerator targetpackage="com.atguigu.bean" targetproject=".\src"> <property name="enablesubpackages" value="true" /> <property name="trimstrings" value="true" /> </javamodelgenerator> // 映射文件的生成策略 <sqlmapgenerator targetpackage="mybatis.mapper" targetproject=".\conf"> <property name="enablesubpackages" value="true" /> </sqlmapgenerator> //dao 接口 java 文件的生成策略 <javaclientgenerator type="xmlmapper" targetpackage="com.atguigu.dao" targetproject=".\src"> <property name="enablesubpackages" value="true" /> </javaclientgenerator> // 数据表与 javabean 的映射 <table tablename="books" domainobjectname="book"></table> </context> </generatorconfiguration>

77 生成器代码 public static void main(string[] args) throws Exception { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File configfile = new File("mbg.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseconfiguration(configfile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator mybatisgenerator = new MyBatisGenerator(config, callback, warnings); mybatisgenerator.generate(null); }

78 测试查询 : QBC public void test01(){ SqlSession opensession = build.opensession(); DeptMapper mapper = opensession.getmapper(deptmapper.class); DeptExample example = new DeptExample(); // 所有的条件都在 example 中封装 Criteria criteria = example.createcriteria(); //select id, deptname, locadd from tbl_dept WHERE //( deptname like? and id >? ) criteria.anddeptnamelike("% 部 %"); criteria.andidgreaterthan(2); List<Dept> list = mapper.selectbyexample(example); for (Dept dept : list) { System.out.println(dept); } }

79 九 MyBatis- 工作原理

80 十 MyBatis- 插件开发 MyBatis 在四大对象的创建过程中, 都会有插件进行介入 插件可以利用动态代理机制一层层的包装目标对象, 而实现在目标对象执行目标方法之前进行拦截的效果 MyBatis 允许在已映射语句执行过程中的某一点进行拦截调用 默认情况下,MyBatis 允许使用插件来拦截的方法调用包括 : Executor (update, query, flushstatements, commit, rollback, gettransaction, close, isclosed) ParameterHandler (getparameterobject, setparameters) ResultSetHandler (handleresultsets, handleoutputparameters) StatementHandler (prepare, parameterize, batch, update, query)

81 插件开发 插件开发步骤 1) 编写插件实现 Interceptor 接口, 注解完成插件签名 2) 在全局配置文件中注册插件

82 插件原理 1) 按照插件注解声明, 按照插件配置顺序调用插件 plugin 方法, 生成被拦截对象的动态代理 2) 多个插件依次生成目标对象的代理对象, 层层包裹, 先声明的先包裹 ; 形成代理链 3) 目标方法执行时依次从外到内执行插件的 intercept 方法 4) 多个插件情况下, 我们往往需要在某个插件中分离出目标对象 可以借助 MyBatis 提供的 SystemMetaObject 类来进行获取最后一层的 h 以及 target 属性的值

83 Interceptor 接口 Intercept: 拦截目标方法执行 plugin: 生成动态代理对象, 可以使用 MyBatis 提供的 Plugin 类的 wrap 方法 setproperties: 注入插件配置时设置的属性

84 常用代码 : 从代理链中分离真实被代理对象 //1 分离代理对象 由于会形成多次代理, 所以需要通过一个 while 循环分离出最终被代理对象, 从而方便提取信息 MetaObject metaobject = SystemMetaObject.forObject(target); while (metaobject.hasgetter("h")) { Object h = metaobject.getvalue("h"); metaobject = SystemMetaObject.forObject(h); } //2 获取到代理对象中包含的被代理的真实对象 Object obj = metaobject.getvalue("target"); //3 获取被代理对象的 MetaObject 方便进行信息提取 MetaObject forobject = SystemMetaObject.forObject(obj);

85 扩展 :MyBatis 实用场景 1) PageHelper 插件进行分页 2) 批量操作 3) 存储过程 4) typehandler 处理枚举

86 PageHelper 插件进行分页 PageHelper 是 MyBatis 中非常方便的第三方分页插件 官方文档 : PageHelper/blob/master/README_zh.md 我们可以对照官方文档的说明, 快速的使用插件

87 使用步骤 1 导入相关包 pagehelper-x.x.x.jar 和 jsqlparser jar 2 在 MyBatis 全局配置文件中配置分页插件 3 使用 PageHelper 提供的方法进行分页 4 可以使用更强大的 PageInfo 封装返回结果

88 批量操作 默认的 opensession() 方法没有参数, 它会创建有如下特性的 会开启一个事务 ( 也就是不自动提交 ) 连接对象会从由活动环境配置的数据源实例得到 事务隔离级别将会使用驱动或数据源的默认设置 预处理语句不会被复用, 也不会批量处理更新 opensession 方法的 ExecutorType 类型的参数, 枚举类型 : ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情 ( 这是默认装配的 ) 它为每个语句的执行创建一个新的预处理语句 ExecutorType.REUSE: 这个执行器类型会复用预处理语句 ExecutorType.BATCH: 这个执行器会批量执行所有更新语句

89 批量操作我们是使用 MyBatis 提供的 BatchExecutor 进行的, 他的底层就是通过 jdbc 攒 sql 的方式进行的 我们可以让他攒够一定数量后发给数据库一次 public void test01() { SqlSession opensession = build.opensession(executortype.batch); UserDao mapper = opensession.getmapper(userdao.class); long start = System.currentTimeMillis(); for (int i = 0; i < ; i++) { String name = UUID.randomUUID().toString().substring(0, 5); mapper.adduser(new User(null, name, 13)); } opensession.commit(); opensession.close(); long end = System.currentTimeMillis(); System.out.println(" 耗时时间 :"+(end-start)); } 100 万记录添加测试结果

90 与 Spring 整合中, 我们推荐, 额外的配置一个可以专门用来执行批量操作的 sqlsession 需要用到批量操作的时候, 我们可以注入配置的这个批量 SqlSession 通过他获取到 mapper 映射器进行操作 注意 : 1 批量操作是在 session.commit() 以后才发送 sql 语句给数据库进行执行的 2 如果我们想让其提前执行, 以方便后续可能的查询操作获取数据, 我们可以使用 sqlsession.flushstatements() 方法, 让其直接冲刷到数据库进行执行

91 存储过程 实际开发中, 我们通常也会写一些存储过程, MyBatis 也支持对存储过程的调用 一个最简单的存储过程 delimiter $$ create procedure test() begin select 'hello'; end $$ delimiter ; 存储过程的调用 1 select 标签中 statementtype= CALLABLE 2 标签体中调用语法 : {call procedure_name(#{param1_info},#{param2_info})}

92 存储过程 - 游标处理 MyBatis 对存储过程的游标提供了一个 JdbcType=CURSOR 的支持, 可以智能的把游标读取到的数据, 映射到我们声明的结果集中 调用实例 :

93 orcl.driver=oracle.jdbc.oracledriver orcl.username=scott orcl.password= public class PageEmp { private int start; private int end; private int count; private List<Emp> emps; <environment id="oracle_dev"> <transactionmanager type="jdbc" /> <datasource type="pooled"> <property name="driver" value="${orcl.driver}" /> <property name="url" value="${orcl.url}" /> <property name="username" value="${orcl.username}" /> <property name="password" value="${orcl.password}" /> </datasource> </environment>

94 <databaseidprovider type="db_vendor"> <property name="mysql" value="mysql"/> <property name="oracle" value="oracle"/> </databaseidprovider>

95 自定义 TypeHandler 处理枚举 我们可以通过自定义 TypeHandler 的形式来在设置参数或者取出结果集的时候自定义参数封装策略 步骤 : 1 实现 TypeHandler 接口或者继承 BaseTypeHandler 2 定义处理的 java 类型 定义 jdbctype 类型 3 在自定义结果集标签或者参数处理的时候声明使用自定义 TypeHandler 进行处理 或者在全局配置 TypeHandler 要处理的 javatype

96 测试实例 一个代表部门状态的枚举类 1 测试全局配置 EnumOrdinalTypeHandler

97 2 测试全局配置 EnumTypeHandler 3 测试参数位置设置自定义 TypeHandler

98 自定义 TypeHandler

99

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

untitled

untitled -JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 Spring 的核心容器 Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 依赖注入的概念 了解 Spring 的概念和优点 理解 Spring 中的 IoC 和 DI 思想 掌握 ApplicationContext 容器的

Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 Spring 的核心容器 Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 依赖注入的概念 了解 Spring 的概念和优点 理解 Spring 中的 IoC 和 DI 思想 掌握 ApplicationContext 容器的 Java EE 企业级应用开发教程 (Spring+Spring MVC+MyBatis) 课程教学大纲 ( 课程英文名称 ) 课程编号 : XXXX 学分 : 5 学分学时 : 90 学时 ( 其中 : 讲课学时 :55 上机学时 :35) 先修课程 :Java 基础案例教程 Java Web 程序设计任务教程 MySQL 数据库入门适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

FileMaker 16 ODBC 和 JDBC 指南

FileMaker 16 ODBC 和 JDBC 指南 FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

优迈科技教学大纲2009版本

优迈科技教学大纲2009版本 java 软 件 工 程 师 培 训 教 学 大 纲 1 JAVA 软 件 工 程 师 培 训 教 学 大 纲 深 圳 软 件 园 人 才 实 训 基 地 2009 年 3 月 目 录 java 软 件 工 程 师 培 训 教 学 大 纲 2 教 学 阶 段...3 第 一 章 JAVA 起 步...3 第 二 章 面 向 对 象 的 编 程...4 第 三 章 数 据 结 构 IO 线 程 网 络...5

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

FileMaker 15 ODBC 和 JDBC 指南

FileMaker 15 ODBC 和 JDBC 指南 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker

More information

untitled

untitled 653 JAVA 2008 11 Institution of Software Engineer... 2... 4... 4... 5... 5... 8... 8... 8... 8... 8... 9... 9... 9... 11... 13... 13... 13... 13... 15... 15... 15... 15... 16... 16... 17... 17... 17...

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

金融信息系统数据库访问实验指导书.doc

金融信息系统数据库访问实验指导书.doc lyaiqing@126.com Hibernate 1. 2. get load 3. update delete 001 1. java HibernateDemo06 2. Hibernate a) Folder lib b) lib import General File System c) next Browse d) jar e) Select All Finish f) lib >Build

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

设计模式 Design Patterns

设计模式 Design Patterns Spring 与 Struts Hibernate 的集成 丁勇 Email:18442056@QQ.com 学习目标 掌握 Spring 与 Struts 的集成 掌握 Spring 与 Hibernate 的集成 学会使用 Spring 实现声明式事务 Spring 与 Hibernate 集成 使用 Spring 简化 Hibernate 编程 使现有使现有 Java Java EE EE 技术更易用

More information

季刊9web.indd

季刊9web.indd 在 全 国 现 场 会 上 成 功 展 示 全 国 烟 叶 收 购 暨 现 代 烟 草 农 业 建 设 现 场 会 7 月 6 日 至 8 日 在 昆 明 召 开 在 国 家 局 的 领 导 下, 由 我 司 技 术 开 发 的 烟 站 ( 单 元 ) 烟 叶 管 理 信 息 系 统 在 现 场 会 上 成 功 展 示, 并 得 到 参 会 领 导 及 代 表 们 的 关 注 与 认 可 该 系 统

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

untitled

untitled Database System Principle Database System Principle 1 SQL 3.1 SQL 3.2-3.3 3.4 3.5 3.6 Database System Principle 2 3.1 SQL SQL Structured Query Language SQL Database System Principle 3 SQL 3.1.1 SQL 3.1.2

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 CHAPTER 1 Understanding Core Database Concepts 1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2 1 Understanding Core Database Concepts

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

untitled

untitled 1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider

More information

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘 ITE 資 訊 專 業 人 員 鑑 定 資 料 庫 系 統 開 發 與 設 計 實 務 試 卷 編 號 :IDS101 注 意 事 項 一 本 測 驗 為 單 面 印 刷 試 題, 共 計 十 三 頁 第 二 至 十 三 頁 為 四 十 道 學 科 試 題, 測 驗 時 間 90 分 鐘 : 每 題 2.5 分, 總 測 驗 時 間 為 90 分 鐘 二 執 行 CSF 測 驗 系 統 -Client

More information

MyBatis 3 用户指南中文版 MyBatis 曾令祝

MyBatis 3 用户指南中文版 MyBatis 曾令祝 MyBatis 3.0.1 曾令祝 2010.06.15 目录 第一章什么是 MyBatis... 3 第二章入门...4 一 从 XML 中创造 SqlSessionFactory...4 二 不使用 XML 文件新建 SqlSessionFactory... 5 三 使用 SqlSessionFactory 获取 SqlSession... 5 四 探究 SQL 映射语句...6 五 作用域和生命周期...

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S 一 個 SQL Injection 實 例 的 啟 示 頁 1 / 6 你 的 網 站 在 裸 奔 嗎? 一 個 SQL Injection 實 例 的 啟 示 作 者 : 李 明 儒 SQL Injection( 資 料 隱 碼 攻 擊 ) 問 題 早 就 不 是 什 麼 新 聞, 但 前 陣 子 在 一 個 頗 具 知 名 度 的 活 動 網 站 上, 赫 然 發 現 它 大 刺 刺 地 現 身!

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

回滚段探究

回滚段探究 oracle oracle internal DBA oracle document oracle concepts oracle document oracle DBWR update t set object_id = '0' where object_id = '12344'; 1 row updated. commit; Commit complete. 0 12344 12344 0 10%

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost //192.0.0.10:9500 / /dbserver.somedomain.com /an_alias /enrollme

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost //192.0.0.10:9500 / /dbserver.somedomain.com /an_alias /enrollme sh -x path/to/hsqldb start > /tmp/hstart.log 2>&1 第 4 章 高 级 话 题 4.1 本 章 目 的 许 多 在 论 坛 或 邮 件 组 中 重 复 出 现 的 问 题 将 会 在 本 文 档 中 进 行 解 答 如 果 你 打 算 在 应 用 程 序 中 使 用 HSQLDB 的 话, 那 么 你 应 该 好 好 阅 读 一 下 本 文 章 本 章

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放 性... 8 3.5 高 性 能 和

目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放 性... 8 3.5 高 性 能 和 致 远 协 同 管 理 软 件 V5 平 台 白 皮 书 北 京 致 远 协 创 软 件 有 限 公 司 2014 年 6 月 1 / 20 目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放

More information

从文档中复制代码的警告 是的, 这不是一个法律上的警告, 但是它可以帮助你保持清醒的认识 从美学上来讲, 现代的文字处理工具在制作可读性强和格式良好的文本上做了大量的工作 然而, 它们也往往会由于插入特殊字符而完全破坏代码示例, 有时看起来和你想要的是一模一样的 引号 " 和连字符就是一个很好的例子

从文档中复制代码的警告 是的, 这不是一个法律上的警告, 但是它可以帮助你保持清醒的认识 从美学上来讲, 现代的文字处理工具在制作可读性强和格式良好的文本上做了大量的工作 然而, 它们也往往会由于插入特殊字符而完全破坏代码示例, 有时看起来和你想要的是一模一样的 引号  和连字符就是一个很好的例子 MyBatis 3 用户指南 从文档中复制代码的警告 是的, 这不是一个法律上的警告, 但是它可以帮助你保持清醒的认识 从美学上来讲, 现代的文字处理工具在制作可读性强和格式良好的文本上做了大量的工作 然而, 它们也往往会由于插入特殊字符而完全破坏代码示例, 有时看起来和你想要的是一模一样的 引号 " 和连字符就是一个很好的例子 - 在 IDE 环境或文本编辑器中, 左边的那个符号就不会正常起作用,

More information

untitled

untitled 1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 组件技术概述 现在软件开发都已经转向了基于组件的开发, 目前具备代表性的组件技术有微软的 COM COM+, 有 Sun 的 Bean 和 EJB(Enterprise Bean), 另外还有 CORBA(Common Object Request Broker Architecture, 公 共对象请求代理结构 ) Bean Bean 规范将 软件组件

More information

untitled

untitled OO 1 SQL Server 2000 2 SQL Server 2000 3 SQL Server 2000 DDL 1 2 3 DML 1 INSERT 2 DELETE 3 UPDATE SELECT DCL 1 SQL Server 2 3 GRANT REVOKE 1 2 1 2 3 4 5 6 1 SQL Server 2000 SQL Server SQL / Microsoft SQL

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f Web Chapter 22 SharePoint Web Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web 21 22-1 SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f Views.asmx View SharePoint

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

第03章 控制反转(Spring IoC)

第03章  控制反转(Spring IoC) 3 Spring IoC GoF Design Patterns: Elements of Reusable Object-Oriented Software Programming to an Interface not an Implementation Java Java Java GoF Service Locator IoC IoC Spring IoC 3.1 IoC IoC IoC Dependency

More information

06-4.indd

06-4.indd 1 02 07 13 16 20 28 33 38 42 46 48 51 57 64 65 65 66 67 68 2 3 4 5 6 7 8 9 10 11 12 13 LL T : 14 LL T 15 16 扫描电子显微镜成像模拟的 MPI 及 OpenMP 并行化 17 18 19 20 21 22 ~ ~ ~ 23 24 ~ ~ ~ ~ ~ ~ ~ 25 26 27 28 29 图 3

More information

Oracle高级复制冲突解决机制的研究

Oracle高级复制冲突解决机制的研究 Oracle dbms_rectifier_diff Oracle : eygle (eygle.com@gmail.com dbms_rectifier_diff Oracle dbms_rectifier_diff : http://www.eygle.com/archives/2005/01/eoadbms_rectifi.html DIFFERENCES Oracle dbms_rectifier_diff.differences

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 1/54 数 据 库 系 统 基 础 哈 尔 滨 工 业 大 学 2011.~2012. 数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护 数 据 库 系 统 基 础 3/54 第 6 章 数 据 库 管 理 与 维 护 6.1 数 据 库 管 理 员 的 基 本 职 责 6.2 数 据 库 存 储 与 性 能 管 理 6.3 数 据 库

More information

// 获取并集 // set1.addall(set2); // 获取交集 set1.retainall(set2); // 打印操作结果 set1.foreach(o -> System.out.println(o)); 运行结果如图 6-1 所示 图 6-1 运行结果 三 案例总结 1 Coll

// 获取并集 // set1.addall(set2); // 获取交集 set1.retainall(set2); // 打印操作结果 set1.foreach(o -> System.out.println(o)); 运行结果如图 6-1 所示 图 6-1 运行结果 三 案例总结 1 Coll 第 6 章集合 案例 6-1 Collection 单列集合的操作 一 案例描述 1 考核知识点编号 :063006002~063006008 063006018 名称 :Collection 单列集合 Arrays 工具类 2 练习目标 掌握 Collection 单列集合方法的使用 3 需求分析 Collection 是所有单列集合的根接口, 在 Collection 中定义了单列集合 (List

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

untitled

untitled 1 .NET 料.NET 料 料來 類.NET Data Provider SQL.NET Data Provider System.Data.SqlClient 料 MS-SQL OLE DB.NET Data Provider System.Data.OleDb 料 Dbase FoxPro Excel Access Oracle Access ODBC.NET Data Provider 料

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

FAQ -PowerDesigner9.5.DOC

FAQ -PowerDesigner9.5.DOC PowerDesigner 9.5 FAQ 1. PowerDesigner PowerDesigner PowerDesigner (CASE Tool,Computer Aided Software Engineering) PowerDesigner 1989 9.5 2. PowerDesigner PowerDesigner Internet ( Java) PowerDesigner 7.0

More information

untitled

untitled http://idc.hust.edu.cn/~rxli/ 1.1 1.2 1.3 1.4 1.5 1.6 2 1.1 1.1.1 1.1.2 1.1.3 3 1.1.1 Data (0005794, 601,, 1, 1948.03.26, 01) (,,,,,) 4 1.1.1 Database DB 5 1.1.1 (DBMS) DDL ( Create, Drop, Alter) DML(

More information

Oracle高级复制配置手册_业务广告_.doc

Oracle高级复制配置手册_业务广告_.doc Oracle 高 级 复 制 配 置 手 册 作 者 : 铁 钉 Q Q: 5979404 MSN: nail.cn@msn.com Mail: nail.cn@msn.com Blog: http://nails.blog.51cto.com Materialized View Replication 复 制 模 式 实 现 了 单 主 机 对 多 个 复 制 站 点 的 数 据 同 步. 在 主

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

untitled

untitled Data Source 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 8-1 Data Source 8-2 Data Source 8-3 Data Source 8-4 Data Source 8-5 DataSourceID 8-6 DataSourceMode 8-7 DataSource 8-8 8-9 Parameter Direction

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

目錄 C ontents Chapter MTA Chapter Chapter

目錄 C ontents Chapter MTA Chapter Chapter 目錄 C ontents Chapter 01 1-1 MTA...1-2 1-2...1-3 1-3...1-5 1-4...1-10 Chapter 02 2-1...2-2 2-2...2-3 2-3...2-7 2-4...2-11...2-16 Chapter 03 3-1...3-2 3-2...3-8 3-3 views...3-16 3-4...3-24...3-33 Chapter

More information

支付宝2011年 IT资产与费用预算

支付宝2011年 IT资产与费用预算 OceanBase 支 持 ACID 的 可 扩 展 关 系 数 据 库 qushan@alipay.com 2013 年 04 月 关 系 数 据 库 发 展 1970-72:E.F.Codd 数 据 库 关 系 模 式 20 世 纨 80 年 代 第 一 个 商 业 数 据 库 Oracle V2 SQL 成 为 数 据 库 行 业 标 准 可 扩 展 性 Mainframe: 小 型 机 =>

More information

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w 1 1.1 D B M S To w e r C D 1. 1 968 I B M I M S 2 0 70 Cullinet Software I D M S I M S C O D A S Y L 1971 I D M S containing hierarchy I M S I D M S I M S I B M I M S I D M S 2 2. 18 R D B M S O R D B

More information

Stateless Session Beans(无状态bean)的学习

Stateless Session Beans(无状态bean)的学习 一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

第3章

第3章 1 chapter 第 1 章 MyBatis 快速入门 1.1 ORM 简介 面向对象程序设计是企业级开发常用的设计方式, 我们在实践中常用的编程语言, 如 Java.Net C++ 等, 都是面向对象的编程语言 在实际生产环境中常用的数据库产品, 如 MySQL Oracle 等, 则都是关系型数据库 虽然 NoSQL 数据库, 如 HBase MongoDB Couchbase 等, 在最近一段时间有了飞速的发展,

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

(Microsoft Word - \272\364\263q\245|\244A_49636107_\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc)

(Microsoft Word - \272\364\263q\245|\244A_49636107_\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc) SCJP (Oracle Certified Professional, Java SE5/6 Programmer) 學 制 / 班 級 : 四 年 制 / 網 通 四 乙 指 導 老 師 : 方 信 普 老 師 學 生 學 號 / 姓 名 : 49636107 蘇 建 瑋 繳 交 年 份 : 100 年 6 月 一 SCJP 介 紹 SCJP 是 Sun Certified Java Programmer

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

PowerPoint Presentation

PowerPoint Presentation 1 版权所有 2011,Oracle 和 / 或其分支机构 保留所有权利 从幻灯片 8 中插入信息保护策略分类 WAC Widget Java ME 手机新动向陈志宇 2 版权所有 2011,Oracle 和 / 或其分支机构 保留所有权利 从幻灯片 8 中插入信息保护策略分类 以下内容旨在概述我们产品总的发展方向 该内容仅供参考, 不可纳入任何合同 该内容不构成提供任何材料 代码或功能的承诺, 并且不应该作为制定购买决策的依据

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information