文档库 最新最全的文档下载
当前位置:文档库 › MyBatis xml配置文件详解

MyBatis xml配置文件详解

MyBatis xml配置文件详解
MyBatis xml配置文件详解

MyBatis xml配置文件详解

一、MyBatis 配置文件基本结构

在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。一个完全的mybatis配置文件结构如下:

[html] view plain copy

PUBLIC "-//https://www.wendangku.net/doc/f517966957.html,//DTD Config 3.0//EN"

"https://www.wendangku.net/doc/f517966957.html,/dtd/mybatis-3-config.dtd">

properties

properties元素主要是用来定义配置外在化,比如数据库的连接属性等。这些属性都是可外部配置且可动态替换的,既可以在典型的Java属性文件中配置,亦可以通过properties元素的子元素来传递。例如:

[html] view plain copy

其中的属性就可以在整个配置文件中使用来替换需要动态配置的属性值。比如在数据源中使用的例子:

[html] view plain copy

这个例子中的username和password将会由properties元素中设置的相应值来替换。driver和url属性将会由config.properties文件中对应的值来替换。这样就为配置提供了诸多灵活选择。属性也可以被传递到SqlSessionBuilder.build()方法中。例如:

[html] view plain copy

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props);

// ... or ...

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props);

但是,这也就涉及到了优先级的问题,如果属性不只在一个地方配置,那么mybatis将会按照下面的顺序来加载:

在properties元素体内指定的属性首先被读取。

然后根据properties元素中的resource属性读取类路径下属性文件或根据url属性指定的路径读取属性文件,并覆盖已读取的同名属性。

最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

因此,通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的是properties属性中指定的属性。settings

setting是指定MyBatis的一些全局配置属性,这是MyBatis中极为重要的调整设置,它们会改变MyBatis的运行时行为,所以我们需要清楚的知道这些属性的作用及默认值。

设置参数描述有效值默认值

cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关true | false true

lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态 true | false false

aggressiveLazyLoading 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载。true | false true

multipleResultSetsEnabled 是否允许单一语句返回多结果集(需要兼容驱动)。 true | false true

useColumnLabel 使用列标签代替列名。不同的驱动在这方面会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。true | false true

useGeneratedKeys 允许JDBC 支持自动生成主键,需要驱动兼容。如果设置为true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如Derby)。true | false False

autoMappingBehavior 指定MyBatis 应如何自动映射列到字段或属性。NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。FULL 会自动映射任意复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULL PARTIAL

defaultExecutorType 配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新。SIMPLE REUSE BATCH SIMPLE

defaultStatementTimeout 设置超时时间,它决定驱动等待数据库响应的秒数。Any positive integer Not Set (null)

defaultFetchSize Sets the driver a hint as to control fetching size for return results. This parameter value can be override by a query setting. Any positive integer Not Set (null)

safeRowBoundsEnabled 允许在嵌套语句中使用分页(RowBounds)。t rue | false False

mapUnderscoreToCamelCase 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名A_COLUMN 到经典Java 属性名aColumn 的类似映射。true | false False

localCacheScope MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。默认值为SESSION,这种情况下会缓存一个会话中执行的所有查询。若设置值为STATEMENT,本地会话仅用在语句执行上,对相同SqlSession 的不同调用将不会共享数据。SESSION | STATEMENT SESSION

jdbcTypeForNull 当没有为参数提供特定的JDBC 类型时,为空值指定JDBC 类型。某些驱动需要指定列的JDBC 类型,多数情况直接用一般类型即可,比如NULL、VARCHAR 或OTHER。JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER OTHER lazyLoadTriggerMethods 指定哪个对象的方法触发一次延迟加载。 A method name list separated by commas equals,clone,hashCode,toString

defaultScriptingLanguage 指定动态SQL 生成的默认语言。 A type alias or fully qualified class name.

org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver

callSettersOnNulls 指定当结果集中值为null 的时候是否调用映射对象的setter(map 对象时为put)方法,这对于有Map.keySet() 依赖或null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成null 的。true | false false

logPrefix 指定MyBatis 增加到日志名称的前缀。Any String Not set

logImpl 指定MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING Not set

proxyFactory 指定Mybatis 创建具有延迟加载能力的对象所用到的代理工具。CGLIB | JAVASSIST JAVASSIST (MyBatis 3.3 or above)

一个完整的settings元素示例如下:

[html] view plain copy

typeAliases

类型别名是为Java类型设置一个短的名字。它只和xml配置有关,存在的意义仅在于用来减少类完全限定名的冗余,例如:

[html] view plain copy

当这样配置时,Blog可以用在任何使用domain.blog.Blog的地方。

也可以指定一个包名,MyBatis会在包名下搜索需要的JavaBean,比如:

[html] view plain copy

每一个在包domain.blog中的JavaBean,在没有注解的情况下,会使用Bean的首字母小写的非限类名来作为它的别名。比如domain.blog.Author的别名为author;若有注解,则别名为注解值。看下面的例子:

[html] view plain copy

@Alias("author") public class Author

{

...}

已经为许多常见的Java类型内建了相应的类型别名。它们都是大小写不敏感的,需要注意的是有基本类型名称重复导致的特殊处理。

别名映射的类型

_byte byte

_long long

_short short

_int int

_integer int

_double double

_float float

_boolean boolean

string String

byte Byte

long Long

short Short

int Integer

integer Integer

double Double

float Float

boolean Boolean

date Date

decimal B igDecimal

bigdecimal BigDecimal

object Object

map Map

hashmap HashMap

list List

arraylist ArrayList

collection Collection

iterator Iterator

typeHandlers

无论是MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java 类型。下表描述了一些默认的类型处理器。

类型处理器Java 类型JDBC 类型

BooleanTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Boolean, boolean 数据库兼容的BOOLEAN

ByteTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Byte, byte 数据库兼容的NUMERIC 或BYTE

ShortTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Short, short 数据库兼容的NUMERIC 或SHORT INTEGER

IntegerTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Integer, int 数据库兼容的NUMERIC 或INTEGER

LongTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Long, long 数据库兼容的NUMERIC 或LONG INTEGER

FloatTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Float, float 数据库兼容的NUMERIC 或FLOAT

DoubleTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.Double, double 数据库兼容的NUMERIC 或DOUBLE

BigDecimalTypeHandler j ava.math.BigDecimal 数据库兼容的NUMERIC 或DECIMAL

StringTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.String CHAR, VARCHAR

ClobTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.String CLOB, LONGVARCHAR

NStringTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.String NVARCHAR, NCHAR

NClobTypeHandler https://www.wendangku.net/doc/f517966957.html,ng.String NCLOB

ByteArrayTypeHandler byte[] 数据库兼容的字节流类型

BlobTypeHandler byte[] BLOB, LONGVARBINARY

DateTypeHandler java.util.Date TIMESTAMP

DateOnlyTypeHandler java.util.Date DATE

TimeOnlyTypeHandler java.util.Date TIME

SqlTimestampTypeHandler java.sql.Timestamp TIMESTAMP

SqlDateTypeHandler java.sql.Date DATE

SqlTimeTypeHandler java.sql.Time TIME

ObjectTypeHandler Any OTHER 或未指定类型

EnumTypeHandler Enumeration Type VARCHAR-任何兼容的字符串类型,存储枚举的名称(而不是索引)

EnumOrdinalTypeHandler Enumeration Type 任何兼容的NUMERIC 或DOUBLE 类型,存储枚举的索引(而不是名称)。

可以重写类型处理器或创建自己的类型处理器来处理不支持的或非标准的类型。具体的做法为:实现org.apache.ibatis.type.TypeHandler接口,或继承一个很便利的类org.apache.ibatis.type.BaseTypeHandler,然后可以选择性地将它映射到一个JDBC类型。比如:

[html] view plain copy

//

ExampleTypeHandler.java

@MappedJdbcTypes(JdbcType.VARCHAR) public class ExampleTypeHandler extends BaseTypeHandler

{

@Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException

{ ps.setString(i,

parameter)

;

}

@Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException

{ return

rs.getString(columnName)

;

}

@Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException

{ return

rs.getString(columnIndex)

;

}

@Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException

{ return

cs.getString(columnIndex);

}}

并且还需要在配置文件里面加上:

[html] view plain copy

使用这个的类型处理器将会覆盖已经存在的处理Java的String类型属性和VARCHAR参数及结果的类型处理器。要注意MyBatis不会窥探数据库元信息来决定使用哪种类型,所以必须在参数和结果映射中指明是VARCHAR类型字段,以使其能绑定到正确的类型处理器上。这是因为,MyBatis直到语句被执行才清楚数据类型。

通过类型处理器的泛型,MyBatis可以得知该类型处理器的Java类型,不过这种行为可以通过两种方法改变:

在类型处理器的元素(typeHandler element)上增加一个javaType属性(比如,javaType="String");

在类型处理器的类上(TypeHandler class)增加一个@MappedTypes注解来指定与其关联的Java类型列表。如果在javaType属性中也同时制定,则注解方式将被忽略。

可以通过两种方式来指定被关联的JDBC类型:

在类型处理器的配置元素上增加一个javaType属性(比如:javaType="VARCHAR");

在类型处理器的类上(TypeHandler class)增加一个@MappedJdbcTypes注解来指定与其关联的JDBC类型列表。如果在javaType属性中也同时指定,则注解方式将被忽略。

最后,还可以让MyBatis查找类型处理器:

[html] view plain copy

注意在使用自动检索(autodiscovery)功能的时候,只能通过注解的方式来指定JDBC类型。

你能创建一个泛型类型处理器,它可以处理多于一个类。为达到此目的,需要增加一个接收该类作为参数的构造器,这样在构造一个类型处理器的时候MyBatis就会传入一个具体的类。

[html] view plain copy

//GenericTypeHandler.java public class GenericTypeHandler extends BaseTypeHandler

{ private Class

type; public GenericTypeHandler(Class type){

if (type == null) throw new IllegalArgumentException("Type argument cannot be null");

this.type =

type;}

...

EnumTypeHandler和EnumOrdinalTypeHandler都是泛型处理器(generic TypeHandlers),接下来的部分详细探讨。

处理枚举类型

若想映射枚举类型Enum,则需要从EnumTypeHandler或者EnumOrdinalTypeHandler中选一个来使用

比如说我们想存储近似值时用到的舍入模式。默认情况下,MyBatis会利用EnumTypeHandler来把Enum值转换成对应的名字。

注意EnumTypeHandler在某种意义上来说是比较特别的,其他的处理器只针对某个特定的类,而它不同,它会处理任意继承了Enum的类。

不过,我们可能不想存储名字,相反我们的DBA会坚持使用整形值代码。那也一样轻而易举;在配置文件中把EnumOrdinalTypeHandler加到typeHandlers中即可,这样每个RoundingMode将通过他们的序数值来映射成对应的整形。

[html] view plain copy

但是怎么样能将同样的Enum既映射成字符串又映射成整形呢?

自动映射器(auto-mapper)会自动选用EnumOrdinalTypeHandler来处理,所以如果我们想用普通的EnumTypeHandler,就非要为那些SQL语句显示地设置要用到的类型处理器不可。

[html] view plain copy

PUBLIC "-//https://www.wendangku.net/doc/f517966957.html,//DTD Mapper 3.0//EN"

"https://www.wendangku.net/doc/f517966957.html,/dtd/mybatis-3-mapper.dtd">

"insert"> insert into users (id, name, funkyNumber, roundingMode) values

( #{id}, #{name}, #{funkyNumber},

#{roundingMode})

"insert2"> insert into users2 (id, name, funkyNumber, roundingMode) values(

#{id}, #{name}, #{funkyNumber}, #{roundingMode, typeHandler=

org.apache.ibatis.type.EnumTypeHandler})

注意,这里的select语句强制使用resultMap来代替resultType。

对象工厂(objectFactory)

MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。如果想覆盖对象工厂的行为,则可以通过创建自己的对象工厂来实现,比如:

[html] view plain copy

//

xampleObjectFactory.java public class ExampleObjectFactory extends DefaultObjectFactory

{ public Object create(Class type)

{ return

super.create(type);

} public Object create(Class type, List constructorArgTypes, List constructorArgs)

{ return super.create(type, constructorArgTypes,

constructorArgs);

} public void setProperties(Properties properties)

{

super.setProperties(properties);

} public boolean isCollection(Class type){

return Collection.class.isAssignableFrom(type);

}}

[html] view plain copy

ObjectFactory接口很简单,它包含两个创建用的方法,一个是处理默认构造方法的,另外一个是处理带参数的构造方法。最后setProperties方法可以被用来配置ObjectFactory,初始化你的ObjectFactory实例后,objectFactory元素体内定义的属性会被传递给setProperties方法。

插件(plugins)

MyBatis允许你在已映射的语句执行过程中的某一点进行拦截调用。默认情况下,Mybatis允许使用插件来拦截的方法调用包括:

Executor(update,query,flushStatements,commit,rollback,getTransaction,close,isClosed)

ParameterHandler(https://www.wendangku.net/doc/f517966957.html,meterObejct,setParameters)

ResultSetHandler(handlerResultSets,handlerOutputParameters)

StatementHandler(prepare,parameterize,batch,update,query)

这些类中方法的细节可以通过查看每个方法的签名来发现,或者直接查看MyBatis的发行包中的源代码。假设你想做的不仅仅是方法的调用,那么你应该很好的了解正在重写的方法的行为。因为如果在视图修改或重写已有方法的行为的时候,你很有可能在破坏MyBatis的核心模块。这些都是更低层的类和方法,所以使用插件的时候要特别担心。

通过MyBatis提供强大的机制,使用插件是非常简单的,只需要实现Interceptor接口,并指定想要拦截的方法签名即可。

[html] view plain copy

// ExamplePlugin.java

@Intercepts({@Signature(

type= Executor.class,

method = "update",

args =

{MappedStatement.class,Object.class})}) public class ExamplePlugin implements Interceptor

{ public Object intercept(Invocation invocation) throws Throwable

{ return

invocation.proceed();

} public Object plugin(Object target)

{ return Plugin.wrap(target,

this);

} public void setProperties(Properties properties)

{}

}

[html] view plain copy

上面的插件将会拦截Executor实例中所有的“update”方法调用,这里的Executor是负责执行底层映射语句的内部对象。

覆盖配置类

除了用插件来修改MyBatis核心行为之外,还可以通过完全覆盖配置类来达到目的。只需继承后覆盖其中的每个方法,再把它传递到sqlSessionFactoryBuilder.build(myConfig)方法即可。再次重申,这可能会严重影响Mybatis的行为,务请慎之又慎!

配置环境(environments)

MyBatis可以配置成适应多种环境,这种机制有助于将sql映射应用于多种数据库中,现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者共享相同的Schema的多个生产数据库,想使用相同的sql映射。许多类似的用例。

尽管可以配置多个环境,但是每个SqlSessionFactory实例只能选择其一。

所以,如果想连接两个数据库,就需要创建两个SqlSessionFactory实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推。每个数据库对应一个SqlSessionFactory实例

为了指定创建哪种环境,只要将它作为可选参数传递给SqlSessionFactoryBuilder即可。可以接受环境配置的两个方法签名是:

[html] view plain copy

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment);

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment,properties);

如果忽略了环境参数,那么默认环境将会被加载,如下所示:

[html] view plain copy

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader);

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,properties);

环境元素定义了如何配置环境

[html] view plain copy

注意这里的关键点:

默认环境的ID(比如:default="development")

每个environment元素定义的环境ID(比如:id="development")

事务管理器的配置(比如:type="JDBC")

数据源的配置(比如:type="POOLED")

默认的环境和环境ID是一目了然的。随你怎么命名,只要保证默认环境要匹配其中一个环境ID

事务管理器(transactionManager)

在MyBatis中有两种类型的事务管理器(也就是type="[JDBC|MANAGED]")

JDBC --- 这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。

MANAGED --- 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如JEE应用服务器上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的行为。例如

[html] view plain copy

如果正在使用Spring+MyBatis,则没有必要配置事务管理器,因为Spring模块会使用自带的管理器来覆盖前面的配置。

这两种事务管理器类型都不需要任何属性。它们只不过是类型别名,换句话说,你可以使用TransactionFactory接口的实现类的完全限定名或类型别名替代它们。

[html] view plain copy

public interface TransactionFactory{

void setProperties(Properties props);

Transaction newTransaction(Connection conn);

Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit);

}

任何在xml中配置的属性在实例化之后将会被传递给setProperties方法。你也需要创建一个Transaction接口的实现类,这个接口也很简单。[html] view plain copy

public interface Transaction{

Connection getConnection() throws SQLException;

void commit() throws SQLException;

void rollback() throws SQLException;

void close() throws SQLException;

使用这两个接口,完全可以自定义MyBatis对事务的处理。

数据源(dataSource)

dataSource元素使用了标准的JDBC数据源接口来配置JDBC连接对象的资源。

许多MyBatis的应用程序将会按示例中的例子来配置数据源。然而它并不是必须的。要知道为了方便使用延迟加载,数据源才是必须的。

有三种内建的数据源类型(也就是type="[]UNPOOLED|POOLED|JNDI]");

UNPOOLED --- 这个数据源的实现只是被请求时打开和关闭连接。虽然有一点慢,它对在及时可用连接方面没有性能要求的简单应用是一个很好的选择。不同的数据库在这方面表现也是不一样的,所以对某些数据库来说使用连接池并不重要,这个配置也是理想。UNPOOLED类型的数据源仅仅需要配置以下5种属性:

driver -- 这是JDBC驱动的Java类的完全限定名(并不是JDBC驱动中可能包含的数据源类)

url -- 这是数据库的JDBC URL 地址。

username -- 登录数据库的用户名。

password -- 登录数据库的密码。

defaultTransactionIsolationLevel -- 默认的连接事务隔离级别。

作为可选项,可以传递属性给数据库驱动。要这样做,属性的前缀为"driver.",例如:

driver.encoding=UTF-8

这将通过DriverManager,getConnection(url,driverProperties)方法传递值为UTF-8的encoding属性给数据库驱动。

POOLED --- 这种数据源的实现利用“池”的概念将JDBC连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。这是一种使得并发web应用快速响应请求的流行处理方式。

除了上述提到UNPOOLED下的属性外,会有更多属性用来配置POOLED的数据源:

poolMaximumActiveConnections -- 在任意时间可以存在的活动(也就是正在使用)连接数量,默认值10

poolMaximumIdleConnections -- 任意时间可能存在的空闲连接数。

poolMaximumCheckoutTime -- 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000毫秒(即20秒)

poolTimeToWait -- 这是一个底层设置,如果获取连接花费的相当长的时间,它会给连接池打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直安静的失败),默认值20000毫秒(即20秒)。

poolPingQuery -- 发送到数据库的侦测查询,用来检验连接是否处在正常的工作秩序中,并且准备接受请求。默认是"NOT PING QUERY SET",这会导致多数数据库连接失败时带有一个恰当的错误信息。

poolPingEnabled -- 是否启用侦测。若开启,也必须使用一个可执行的SQL语句设置poolPingQuery属性(最好是一个非常快的SQL),默认值:false。poolPingConnectionsNotUsedFor -- 配置poolPingQuery使用的频度。这可以被设置成匹配具体的数据库连接超时时间,来避免不必要的侦测,默认值:0(即所有连接每一时刻都被侦测-- 当然仅当poolPingEnabled为true时适用)。

JNDI -- 这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。这种数据源配置只要两个属性:

initial_context -- 这个属性用来在InitialContext中寻找上下文(即,initialContext.lookup(initial_context))。这是个可选属性,如果忽略,那么data_source 属性将会直接从InitialContext中寻找。

data_source -- 这是引用数据源实例位置的上下文的路径。提供了initial_context配置时会在其返回的上下文中进行查找,没有提供时则直接在InitialContext中查找。

和其他数据源配置类似,可以通过添加前缀"env."直接把属性传递给初始上下文。比如:

env.encoding=UTF-8

这会在初始上下文(InitialContext)实例化时往它的构造方法传递值为UTF-8的encoding属性。

通过需要实现接口org.apache.ibatis.datasource.DataSourceFactory,也可使用任何第三方数据源,:

[html] view plain copy

public interface DataSourceFactory{

void setProperties(Properties props);

DataSource getDataSource();

org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory 可被用作父类来构建新的数据源适配器,比如下面这段插入C3P0所必需的代码:[html] view plain copy

import

org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory; import

https://www.wendangku.net/doc/f517966957.html,boPooledDataSource; public class C3P0DataSourceFactory extends UnpooledDataSourceFactory

{ public C3P0DataSourceFactory(){

this.dataSource = new

ComboPooledDataSource();}

}

为了令其工作,为每个需要MyBatis调用的setter方法中增加一个属性。下面是一个可以连接到PostgreSQL数据库的例子:

[html] view plain copy

databaseIdProvider

MyBatis可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的databaseId属性。MyBatis会加载不带databaseId属性和带有匹配当前数据库databaseId属性的所有语句。如果同时找到带有databaseId和不带databaseId的相同语句,则后者被舍弃。为支持多厂商特性,只要像下面这样在mybatis-config.xml文件中加入databaseIdProvider即可:

[html] view plain copy

这里的DB_VENDOR会通过DatabaseMetaData#getDatabaseProductName()返回的字符串进行设置。由于通常情况下这个字符串都非常长而且相同产品的不同版本会返回不同的值,所以最好通过设置属性别名来使其变短,如下:

[html] view plain copy

在有properties时,DB_VENDOR databaseIdProvider的将被设置为第一个能匹配数据库产品名称的属性键值对应的值,如果没有匹配的属性将会设置为”null“。在这个例子中,如果getDatabaseProductName()返回”Oracle(DataDirect)“,databaseId将被设置为"oracle"。

可以通过实现接口org.apache.ibatis.mapping.DatabaseIdProvider并在mybatis-config.xml中注册来构建自己的DatabaseIdProvider:

[html] view plain copy

public interface DatabaseIdProvider{

void https://www.wendangku.net/doc/f517966957.html,erties(Properties p);

String getDatabaseId(DataSource dataSource) throws SQLException;

}

映射器(mappers)

既然MyBatis的行为已经由上述元素配置完了,现在就要定义SQL映射语句了。但是首先需要告诉MyBatis到哪里去找到这些语句。Java在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉MyBatis到哪里去找映射文件。可以使用相对于类路径的资源引用、或完全限定资源定位符(包括file:///的URL),或类名和包名等等。例如:

[html] view plain copy

[html] view plain copy

[html] view plain copy

[html] view plain copy

这些配置会告诉了MyBatis去哪里找映射文件,剩下的细节就应该是每个SQL映射文件了。

wmi文档

问题1:WMI 是什么,它能帮我做什么? Windows 管理规范(Windows Management Instrumentation)是一项核心的Windows 管理技术;用户可以使用WMI 管理本地和远程计算机。WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径。例如,用户可以: ?在远程计算机器上启动一个进程。 ?设定一个在特定日期和时间运行的进程。 ?远程启动计算机。 ?获得本地或远程计算机的已安装程序列表。 ?查询本地或远程计算机的Windows 事件日志。 WMI 中的“Instrumentation”特指WMI 可以获得关于计算机内部状态的信息,这与汽车仪表盘获得并显示引擎的状态信息非常类似。WMI 对磁盘、进程、和其他Windows 系统对象进行建模,从而实现“指示”功能。这些计算机系统对象采用类来建立模型,例如Win32_LogicalDisk 或Win32_Process;如您所料,Win32_LogicalDisk 类用于建立在计算机上安装的逻辑磁盘的模型,Win32_Process 类用于建立正在计算机上运行的任何进程的模型。这些类基于一个名为通用信息模型(Common Information Model,CIM)的可扩展架构。CIM 架构是分布式管理任务组(Distributed Management Task Force)的一个公开标准( https://www.wendangku.net/doc/f517966957.html,). WMI 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示等等。 想进一步了解WMI,请访问https://www.wendangku.net/doc/f517966957.html,/library/default.asp并搜索关键词“About WMI”。 返回页首 问题2:WMI 适用于那些平台? WMI 适用于所有最新版本的Windows。WMI 附带在Windows Me、Windows 2000、Windows XP 和Windows Server 2003 之中。 对于Windows 98 和Windows NT 4.0,可以访问https://www.wendangku.net/doc/f517966957.html,/downloads. 并搜索“Windows Management Instrumentation (WMI) CORE 1.5 (Windows 95/98/NT 4.0)”。 注意:在Windows NT 4.0 上安装并运行WMI 之前,需要首先安装Service Pack 4 或更高版本。 WMI 需要的其他软件包括: 1. Microsoft? Internet Explorer 5.0 或更高版本。 2. Windows Script Host(WSH)。Windows 2000、Windows XP、Windows Server 2003、和Windows Me 附 带的WSH,而不是Windows NT4 或Windows 98 附带的WSH。您可以从以下地址下载WSH https://www.wendangku.net/doc/f517966957.html,/downloads. WSH 的最新版本——包括在Windows XP 和Windows Server 2003 之中——是WSH 5.6。 返回页首 问题3:如果WMI 向外界暴露特定的功能,我如何才能知道? MSDN 是了解WMI 及其功能的详细参考信息的最佳场所;请参考以下地址获取WMI 参考信息:https://www.wendangku.net/doc/f517966957.html,/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp. WMI 参考中包含了关于WMI 标准安装中大多数类、对象和API 的信息。注意:不属于操作系统一部分的WMI 提

proe工程图配置文件.dtl常用选项及使用详解

工程图配置文件.dtl常用选项及使用详解 工程图配置文件是出工程图所必需了解掌握的知识。我写过一篇关于系统配置文件config.pro的教程,里面提到过配置文件对于使用PROE非常重要。 config.pro的使用,请先看这个帖https://www.wendangku.net/doc/f517966957.html,/thread-9138-1-1.html 不可否认的是,论坛工程图版的求助帖超过一半与工程图配置文件设置有关。可见工程图配置文件的重要性。工程图配置文件*.dtl使用上比系统配置文件config.pro要简单一些。所以本帖先将一些常用选项列出,供大家参考。配置文件使用方面的内容放在后面讲解。 本帖为原创,严禁转载! 请勿综合成PDF或WORD等格式打包下载,谢谢合作! 本帖不设回复可见,方便大家都可以见到 本帖所讲述的内容目录如下: 一、工程图配置文件常用选项及说明 二、工程图配置文件使用详解 1、创建工程图配置文件*.dtl 2、工程图配置文件选项的查找 3、工程图配置文件的选项设置与修改 4、工程图配置文件的正确调用 一、工程图配置文件常用选项及说明 drawing_units mm(前面为选项,空格后为值,下同) 此项设置所有绘图参数的单位,比如后面的文字大小、箭头大小等选项,是以mm为单位的,先要设置这个选项。 drawing_text_height 3.5 设置缺省文本的缺省高度,如注释中的文字,标注中的数值大小。 text_width_factor 0.7 设置文本的高度和宽度的比例,按国标应使用长仿宋体,应为0.7。 但此项设置对于windows系统自带的仿宋体无效。 broken_view_offset 3 设置破断视图两破断线之间的距离 detail_circle_line_stylephantomfont 设置详细视图(局部放大图)的边界线的线型,影响打印的粗细 projection_typefirst_angle 设置视图的投影方向为第一角法(国标要求用第一角法,日本等国用第三角法)

windows server 2012 r2 文件服务器安装与配置

Windows Server 2012 R2 文件服务器安装与配置01 之目录说明 Windows Server 2012 R2 文件服务器安装与配置02 之基础说明与安装 一、文件服务器的基础说明 文件服务器是企业里面用的最多的服务器之一,它主要用于提供文件共享。 为了配合文件服务器的权限管理,从WindowsServer2008新增了文件服务器资源管理器,其实在WindowsServer2003里面也有文件服务器资源管理器的功能,只是放于DFS功能模块里面了。 文件服务器资源管理器是一组可让你对文件服务器上存储的数据进行管理和分类的功能。文件服务器资源管理器包括以下功能: l文件分类基础结构文件分类基础结构通过分类流程的自动化提供对数据的洞察力,从而让你更有效地管理数据。你可以基于此分类对文件进行分类并应用策略。示例策略包括限制访问文件的动态访问控制、文件加密和文件过期。可以使用文件分类规则自动分类文件,也可以修改所选文件或文件夹的属性手动分类文件。 l文件管理任务文件管理任务可让你基于分类对文件应用有条件的策略或操作。文件管理任务的条件包括文件位置、分类属性、创建文件的数据、文件的上一次修改日期或上一次访问文件的时间。文件管理任务可以采取的操作包括使文件过期、加密文件的功能,或运行自定义命令的功能。 l配额管理配额允许你限制卷或文件夹可拥有的空间,并且它们可自动应用于卷上创建的新文件夹。 你还可以定义可应用于新卷或文件夹的配额模板。 l文件屏蔽管理文件屏蔽可帮助控制用户可存储在文件服务器上的文件类型。你可以限制可存储在共享文件上的扩展名。例如,你可以创建文件屏蔽,不允许包含MP3扩展名的文件存储在文件服务器上的个人共享文件夹上。 l存储报告存储报告可用于帮助你确定磁盘使用的趋势以及数据分类的方式。你还可以监视尝试要保存未授权文件的一组所选用户。

weblogic中config.xml文件的配置

利用wmic对Windows主机批量执行脚本

利用wmic对Windows主机批量执行脚本 2014年11月13日 AM 10:53 与类Unix操作系统相比较,Windows系统由于对字符界面的支持不完善,并没有与类Unix系统的shell可以相提并论的工具(cmd的命令行特性难用程度与 shell相比简直令人发指,虽然目前Windows推出所谓的PowerShell,但要跟上bash、korn shell等前辈还需要时间来沉淀)。一直以来,对于Windows进行批量管理大多依靠于图形界面,效率低下且可靠性不足。 其实Windows本身提供了WMI管理规范和接口,专用于支持命令行方式的系统管理,更推出wmic工具来给系统管理员使用,以下是百度百科对于wmic的介绍:WMIC扩展WMI(Windows Management Instrumentation,Windows管理规范),提供了从命令行接口和批命令脚本执行系统管理的支持。在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的。WMIC改变了这种情况,为WMI名称空间提供了一个强大的、友好的命令行接口。 概念的介绍总是容易让读者云里雾里,以下试验将演示如何使用wmic以及Windows共享功能来对批量服务器执行一个离线安全扫描脚本并取回结果。 试验背景: 现需要对批量Windows Server服务器进行离线安全扫描,即登录到每一台服务器执行一个vbs脚本,脚本会生成扫描结果文件,然后将结果文件下载到本地。倘若服务器数量不多,那么一台台登录执行也就罢了,但当目标服务器数量达到一定数量后,再手工进行此操作,就成为一件繁琐重复的工作。有人说,懒惰是推动人类文明不断进步的源动力。所以为了偷懒,不,为了人类文明的进步,这个工作必须使用批量和自动化的工具来完成。 实现思路: 将此工作分解为以下步骤,逐一实现: 1、登录Windows Server服务器; 2、上传扫描脚本到目标服务器; 3、执行扫描脚本; 4、下载结果文件; 5、对其他服务器重复前4个步骤。 第1步的登录服务器,传统来说,肯定是使用远程桌面了,但如前面所说,图形界面的东西,要进行批量操作是很麻烦的。那自然要使用字符界面来进行登录了,再自然地想到telnet方式是最简便通用的协议。但现今所有负责任的系统或安全管理人员都会告诉你,想用telnet来连接我的服务器?门都没有!幸好wmic就提供了远程主机的管理接口,使用"wmic /node:IP地址 /user:帐号 /password:密码"的形式可以登录到远程主机执行wmic命令。第3步的执行脚本,其实与登录是同时进行的,此处结合第1、第3步,命令就是: wmic /node:IP地址 /user:帐号 /password:密码 process call create "cmd /c cmd命令或脚本" 第2和第4步,上传与下载,其实是同样的需求,如果开通了ftp之类的文件传输服务,自然简单。但当前环境并未开通ftp,所以考虑使用Windows的文件夹共享与网络映射来实现。首先在远端服务器使用wmic创建一个路径为c:\tempshare的共享目录,然后将其映射到本地的Z盘,再直接在Z盘上进行文件的读取。

8313配置文件及说明

writereg MBAR 0xFF400000 writemem.l 0xFF400000 0xE0000000 # IMMRBAR = 0xE0000000 writereg MBAR 0xE0000000 writemem.l 0xE0000020 0xFE000000# LBLAWBAR0 - begining at 0xfe000000 writemem.l 0xE0000024 0x80000014# LBLAWAR0 - enable, size = 2MB #writemem.l 0xE0000028 0xFA000000 # LBLAWBAR1 FPGAbegining at 0xfa000000 #writemem.l 0xE000002C 0x8000000E # LBLAWAR1 - enable, size = 32KB writemem.l 0xE00000A0 0x00000000 # DDRLAWBAR0 - begining at 0x00000000 writemem.l 0xE00000A4 0x80000018 # DDRLAWAR0 - enable, size = 32MB # DDR Controller Configuration #1 DDRCDR writemem.l 0xE0000128 0x73040002 #CLK_CNTL writemem.l 0xE0002130 0x02000000 #同原0x02000000。[5-7]CLK_ADJST = 010(1/2),or 011(3/4) # CS0_BNDS writemem.l 0xE0002000 0x00000001 # 0x00000001 - 0x01FFFFFF ;32MB # CS0_CONFIG # [8]AP_0_EN = 1,0? # [16-17]BA_BITS_CS_0 = 00,01? Number of bank bits for SDRAM on chip select n. # [21-23]ROW_BITS_CS_0 = b'001' ; 12 row bits # [29-31]COL_BITS_CS_0 = b'010' ; 9 columns bits #原0x80840102 不同:[29-31]、[21-23], writemem.l 0xE0002080 0x80000001 # TIMING_CFG_3 原0x00000000 # 13-15EXT_REFREC = 001; AUTO REFRESH command period tRFC=72 ns writemem.l 0xE0002100 0x00010000 # TIMING_CFG_1 原0x26256222 # bit 1-3 = 2 tRP=15ns,(tck=7.5) (类似tRP ,为DDR芯片手册上内容)# bit 4-7 = 6 tRAS=42ns, # bit 9-11 = 2 tRCD=15ns, # bit 12 - 15 = 0011:2;0100:2.5 # bit 16 - 19 = 2 (10tck) tRFC=72 ns (tck=7.5) # bit 21 - 23 = 2 tWR=15ns, # bit 25 - 27 = 2 tRRD=12ns, # bit 29 - 31 = 1 tWTR=1tck writemem.l 0xE0002108 0x26232221

Spring中加载xml配置文件的几种方式

项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,就总结了下Spring中加载xml配置文件的方式, xml是最常见的spring 应用系统配置源。Spring中的几种容器都支持使用xml装配bean,包括:XmlBeanFactory, ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, XmlWebApplicationContext, ..... 一: XmlBeanFactory 引用资源 1.Resource cr = new ClassPathResource("applicationContext.xml"); BeanFactory bf=new XmlBeanFactory(cr); UserDao userDao = (UserDao)bf.getBean("userDao"); 二: ClassPathXmlApplicationContext 编译路径 使用ClassPathXmlApplicationContext对象获取,必须把applicationContext.xml放置到类的加载路径中,也就是Src下面 1.ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml"); // src目录下的 2.ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)context.getBean("userDao"); 3.ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext-oracle.xml","applicationContext.xml"}); UserDao userDao = (UserDao)context.getBean("userDao"); // src/conf 目录下的 4.ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml"); 5.ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml"); 三: FileSystemXmlApplicationContext用文件系统

用 wmic 从命令行加入域的问题

用wmic 从命令行加入域的问题 用wmic 从命令行加入域的问题 -------------------------------------------------------------------------------- Silence2007-04-07, 23:03:29 在XP 下,用WMIC 命令可以实现将计算机加入域或工作组。WMIC 的功能非常丰富,下面是与域有关的部分内容。 1. 加入域 wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="d https://www.wendangku.net/doc/f517966957.html," username="https://www.wendangku.net/doc/f517966957.html,\username" password="password" FJoinOptions=1 注: %COMPUTERNAME% 系统环境变量,内容是计算机名。 FJoinOptions=1 表示首次加入域,若不指定username 和password,则表示加入/修改工作组。FJoinOptions=32 表示允许加入一个新域,即使该计算机已经加入到了某个域。 2、退出域 wmic computersystem where Name="%COMPUTERNAME%" call UnJoinDomainOrWorkgroup userna me="https://www.wendangku.net/doc/f517966957.html,\username" password="password" 命令运行后会显示一个返回值,若值为零则表示成功。 我有上千台微机需要加入域,所以希望来个快捷的办法。这些天进行了多次试验,发现退出域命令1 00% 测试有效,而加入域命令却经常不成功,而且我一直没有发现什么规律。百思不得其解,特来论坛讨教。 测试环境:2000 Server + XP Pro SP2 -------------------------------------------------------------------------------- asap2007-04-08, 06:50:21 将FJoinOptions=3试试。2表示在server端创建computer account。没有试过Windows 2000 Server 下的自动加入;以前也是写的vbscript脚本这样作的;看MSDN上说这个的要求是这样的: Client Requires Windows Vista or Windows XP. Server Requires Windows Server "Longhorn" or Windows Server 2003. 也许这个就是问题所在?手动加入domain时,如果不成功时,也是需要在DC上建立computer账号的。 good luck! -------------------------------------------------------------------------------- G992007-04-08, 07:45:32 学习一下哈

MySQL配置文件详解

./configure --prefix=/usr/local/mysql \ --without-debug \ #去除debug模式. --enable-thread-safe-client \ #以线程方式编译客户端. --with-pthread \ #强制使用pthread线程库编译. --enable-assembler \ #允许使用汇编模式. --enable-profiling \ #Build a version with query profiling code (https://www.wendangku.net/doc/f517966957.html,munity-features) --with-mysqld-ldflags=-all-static \ #静态编译mysqld的额外link参数. --with-client-ldflags=-all-static \ #静态编译client的额外link参数. --with-charset=utf8 \ #默认字符utf8. --with-extra-charsets=all \ #支持所有的语言字符. --with-innodb \ #innodb数据引擎. --with-plugins=innobase \ --with-plugins=heap \ #内存数据引擎. --with-mysqld-user=mysql \ #mysql安装使用的帐号 --without-embedded-server \ #去除安装embedded-server. --with-server-suffix=-community \ #社区形式安装. --with-unix-socket-path=/tmp/mysql.sock MYSQl启动的一般设置: /etc/https://www.wendangku.net/doc/f517966957.html,f基本部设参数设置. # back_log 是操作系统在监听队列中所能保持的连接数, # 队列保存了在MySQL连接管理器线程处理之前的连接. # 如果你有非常高的连接率并且出现"connection refused" 报错, # 你就应该增加此处的值. # 检查你的操作系统文档来获取这个变量的最大值. # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果 # 在MYSQL的连接请求等待队列中允许存放的最大连接请求数. defautl=50,最大65535,根据os对网络监听队列的情况来设置. back_log = 20000 # MySQL 服务所允许的同时会话数的上限 # 其中一个连接将被SUPER权限保留作为管理员登录. # 即便已经达到了连接数的上限. # 整个Mysql允许的最大连接数.这个参数会影响mysql的应用并发处理能力.有些资料上提到 500-800,以我们的机子来说单个mysql实例设置10000应该是没有问题的。如果还需可能需要第三方软件解决php连接池的问题,提高还需要连接池. max_connections = 10000 # 每个客户端连接最大的错误允许数量,如果达到了此限制. # 这个客户端将会被MySQL服务阻止直到执行了"FLUSH HOSTS" 或者服务重启 # 非法的密码以及其他在链接时的错误会增加此值. # 查看 "Aborted_connects" 状态来获取全局计数器. max_connect_errors = 10

文件服务器配置文档

文件服务器安装配置过程 cloud附件如何需要上传word,Excel,pdf等文件,必须要安装文件服务器,配置好文件服务器后,才能上传这些文件,并在线预览。(如果只上传图片文件,则不需要安装文件服务器) 1、程序安装 按照如上图所示勾选文件进行安装。安装完成后不需要在另外打补丁,直接进行配置(本人安装版本为7.2,之前版本是否需要打补丁,没有验证) 如果没有安装好,建议卸载重装。在启用文件服务器时,可以确认文件服务器是否安装。 2、程序安装好后, 首先需要启用文件服务器,用administrator用户登录系统,在公共设置-文件服务器设置

按照如上所示,录入相关内容,然后检测文件服务是否可用

如上,检测信息全部通过,则文件服务器配置成功,即可以测试上传附加。不过通常首次新增文件服务器地址检测时,其中有几项会有问题,需要另外设置,然后在回头进行测试。不过,检测出的结果显示文件服务器可用,就可以保存。然后在配置其他内容。虚拟目录一定要与规定的名称一样,否则会出现文件服务器不可用。文件服务器地址为安装文件服务器电脑的地址,端口号为映射到外网的端口号。 检测完成后,保存文件服务器地址,文件服务器即启用成功。然后根据检测报错内容进行配置,一般会有如下报错: 1)、文件服务器存储目录 首先在硬盘建立相应文件夹,然后点击基础管理-公共设置-文件服务目录设置 点新增

如果文件服务器地址配置不成功,会发现存储目录地方为灰色,不能录入。 在存储目录地方设置好之前建好的文件夹路径 2)。文件目录权限设置报错 文件服务目录的权限设置:增加network service ,everyone的所有权限 同时文件服务器器安装目录下的\Kingdee\K3Cloud\文件夹FileService赋予network service, everyone权限

基于WMIC和脚本实现对内网终端及设备的信息统计

基于WMIC和脚本实现对内网终端及设备的信息统计 摘要:随着电力企业信息化的不断深入发展,电力企业对信息化的依赖程度越 来越高,公司各种终端越来越多,给运维人员的设备台账治理带来了很大的难度。本文主要探讨利用wmic和脚本进行终端信息收集,提高运维人员的工作效率。 关键词:WMIC;脚本;终端信息 1 引言 建立详细的设备台账,是终端运维工作的基础,但随着电网的发展,公司各 类终端越来越多,给运维人员的设备台账治理带来了很大难度。微软Windows98 及以后的版本提供了WMIC功能,可快速查询系统软硬件及外接设备信息数据, 利用这一功能,使用宿主脚本及数据库技术,结合桌管系统策略下发功能,可提 高内外网终端及外接设备普查效率。 2 软件介绍 2.1 WMIC wmic是wmic命令行,作为WindowsXP的一部分发布的wmi命令行工具提 供一个到wmi接触结构的命令行接口。可以使用wmic.exex执行来自命令行的常 见wmi任务,包括浏览CIM和检查CIM类定义。 2.2 VB脚本 VBScript是Visual Basic Script的简称,即Visual Basic脚本语言,它是一种微 软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系 统中的元素,对系统进行管理。同时它又是asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的asp动态网页开发技术。如图2-1所示。 图2-1 2.3 北信源主机监控审计与补丁分发系统 北信源主机监控审计与补丁分发系统,以终端管理为核心,形成集主机监控审计、补丁 管理、桌面应用管理、信息安全管理、终端行为管控等终端安全行为一体的管理体系,为企 业管理者提供终端多位一体、同意管理的解决方案。 3 处理过程 3.1 前期准备 1)根据工作任务要求,收集合理的统计字段。 2)利用微软操作系统wbemtest工具在wmic中寻找相应的类别及对象,对相似相近的类 别 对象,根据要求进行合理的取舍。 3)根据确定的字段,在SQL Server数据库(或任何支持网络的关系型数据库)建立终端 计算机及外接设备数据表,并设置合理的字段属性。 3.2 编制脚本 1)编制并测试数据收集上报的宿主脚本程序,宿主脚本通过调用操作系统wmic管理功能,获取本机软硬件及外接设备数据后立刻上传服务器。 2)为更好的支持数据库,应采用VBScript或JavaScript脚本。 3)为最大化减少普查工作对终端用户的影响,宿主脚本或批处理在工作期间应以静默方 式运行。 3.3 下发策略 1)上传脚本至桌管系统,为确保数据库用户名、密码、ip等连接参数安全,不应该将明 文用户、密码、ip等变量直接写入脚本中,因为终端用户通过查看和截留脚本,可获取服务 器ip、端口、用户名、密码,采用加密的策略参数传递可以很好的解决这一安全性问题。

AndroidManifest.xml配置文件详解

AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文旨在总结该配置文件中重点的用法,以便日后查阅。下面是一个标准的AndroidManifest.xml文件样例。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. . . . 33. 34. 35. 36. 37. 38. . . . 39. 40.

配置文件使用说明

(1)报警切除功能 C:\windows\cas2000ops.ini中 [CutAlarm] Enable=0 说明:Enable置0时无报警切除功能,置1时有报警切除功能。默认为0 ( 2 ) 语音报警功能 C:\ windows\ Keyboard.ini中 [Keyboard] SelfSound=1 SoundFileName=ALARM.wav 说明: a)SelfSound项置0时,无语音报警功能,置1时有语音报警功能。默认为0 b)语音文件路径应放在操作员站的Start路径下,SoundFileName用户可以自 定义,默认为ALARM.wav。 (3)在线查询时长 C:\windows\cas2000ops.ini中 [TimeLength] show24hour=1; show60hour=1 说明:show24hour置1时,实时趋势时间段有24小时的时间段,置0时没有show60hour同上。 (4)PID调节幅值更改 操作员安装路径\config\ PID_ADJUST.ini [PID点名] SLOW=0 FAST=0 说明:此调节是按绝对值调节,不是按百分比调节; SLOW与FAST项需为非零值,且FAST值〉SLOW值 默认情况下没有文件PID_ADJUST.ini,需要用户自定义。 (5)点详细窗口风格 C:\windows\cas2000ops.ini中 [TagCurve] Mode=0 说明:Mode置0为浮动窗口风格,置1位对话框。默认为0。 (6)操作员站工程师台菜单项中综合趋势窗口和开关趋势窗口菜单C:\windows\cas2000ops.ini中 [ExtraTrendMenu] Mode=0 说明:Mode置0有综合趋势窗口和开关趋势窗口菜单,置1无。默认为

ecology各配置文件开关说明

配置文件存放路径:ecology/WEB-INF/prop/ 1、weaver.properties(标准版基本配置) 以下几项配置为默认不打开的开关,或新版本增加的开关: ecology.changestatus = 1(任意不为空的值)--开启流程反馈功能。 ecology.overtime = 5(必须为数字,代表超时检测的时间,单位为分钟。如果不是数字,系统将默认1分钟检测一个超时)ecology.isgoveproj = 0(必须为数字,为0代表企业版,为1代表政务版)--【8831】 ecology.LicenseVersion = 2(必须为数字,2代表固定通过本地连接的网卡来获取license识别码,动态的虚拟网卡等不再获取,不添加此配置或值为1表示按照原方式获取识别码,包括虚拟网卡--【9911】) 2、Upgrade.properties(系统升级配置文件) STATUS = 0(数字,标示升级的状态 ERRORLOG = (升级错误日志所在地址) 3、Others.properties(非标准版功能配置文件) ##是否启用流程出口消息提醒【8940】 WORKFLOWWAYOUT = t(t为开启,f为关闭,默认为f) ##定时清除流程不良信息的周期,同时也做为消息提醒定时删除周期和保留天数。单位(天)【9080】 WFERRORDATACLEARTIME = 7(数字) ##系统是否使用多账号登陆【9325】 MOREACCOUNTLANDING = y(y为开启) ##即时通讯开关【9425】 MESSAGES_SET = 1(1为开启) ##是否启用签到签退功能true:是false或其它:否【9286】 isSignInOrSignOut=true(true为开启) ##繁体开关【11991】 ZH_TW_LANGUAGE = 1(1为开启) 4、workflowmonitor.properties(流程监控增加流程干预功能)WORKFLOWINTERVENORBYMONITOR = y(y为开启)【9423】 5、worktask.properties(计划任务【9427】) #1,使用计划任务模块;0,不使用;读不到该值,默认为0 isusedworktask = 1(1为开启) #计划任务模板转任务提前转化天数,读不到该值,默认为7天mudelchangewakefrequency = 7(数字) 6、dactylogram.properties(指纹登录【9557】) ONDACTYLOGRAM = Y(Y为启用,N为禁用)

Spring中xml的配置

Spring中xml的配置(摘抄) 出自:https://www.wendangku.net/doc/f517966957.html, 1、value元素 元素通过字符串来指定属性或构造器参数的值。 com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/mydb root 2、idref元素 idref元素用来将容器内其它bean的id传给元素,同时提供错误难功能。 等同于: theTargetBean

Wmic使用指南

14.Wmic使用指南 BIOS –基本输入/输出服务(BIOS) 管理 ::查看bios版本型号 wmic bios get Manufacturer,Name COMPUTERSYSTEM –计算机系统管理 ::查看系统启动选项,boot的内容 wmic COMPUTERSYSTEM get SystemStartupOptions ::查看工作组/域 wmic computersystem get domain ::更改计算机名abc为123 wmic computers ystem where “name=’abc’” call rename 123 ::更改工作组google为MyGroup wmic computersystem where “name=’google’” call joindomainorworkgroup “”,”",”MyGroup”,1 CPU –CPU 管理 ::查看cpu型号 wmic cpu get name DATAFILE –DataFile 管理

::查找e盘下test目录(不包括子目录)下的文件 wmic d atafile where “drive=’e:’ and path=’\\test\\’ and FileName=’cc’ and Extension=’cmd’” list ::查找e盘下所有目录和子目录下的文件,且文件大小大于1K wmic datafile where “drive=’e:’and FileName=’cc’and Extension=’cmd’and FileSize>’1000′”list ::删除e盘下文件大小大于10M的.cmd文件 wmic datafile where “drive=’e:’and Extension=’cmd’and FileSize>’′”call delete ::删除e盘下test目录(不包括子目录)下的非.cmd文件 wmic datafile where “drive=’e:’ and Extension<>’cmd’ and path=’test’” call delete ::复制e盘下test目录(不包括子目录)下的文件到e:\,并改名为wmic datafile where “drive=’e:’ and path=’\\test\\’ and FileName=’cc’ and Extension=’cmd’” call copy “e:\” ::改名c:\为c:\ wmic datafile “c:\\” call rename c:\ ::查找h盘下目录含有test,文件名含有perl,后缀为txt的文件 wmic datafile where “drive=’h:’ and extension=’txt’ and path like ‘%\\test\\%’ and filename like ‘%perl%’” get name DESKTOPMONITOR –监视器管理

相关文档 最新文档