文档库 最新最全的文档下载
当前位置:文档库 › Mybatis映射配置文件

Mybatis映射配置文件

Mybatis映射配置文件
Mybatis映射配置文件

XML 映射配置文件

MyBatis 的XML 配置文件包含了影响MyBatis 行为甚深的设置和属性信息。XML 文档的高层级结构如下:

?configuration 配置

?properties 属性

?settings 设置

?typeAliases 类型命名

?typeHandlers 类型处理器

?objectFactory 对象工厂

?plugins 插件

?environments 环境

?environment 环境变量

?transactionManager 事务管理器

?dataSource 数据源

?databaseIdProvider chinese?

?mappers 映射器

properties

这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的Java 属性配置文件中, 或者通过properties 元素的子元素来传递。例如:

其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。比如:

这个例子中的username 和password 将会由properties 元素中设置的值来替换。driver 和url 属性将会从包含进来的config.properties 文件中的值来替换。这里提供很多配置的选项。

属性也可以被传递到SqlSessionBuilder.build()方法中。例如:

如果在这些地方,属性多于一个的话,MyBatis 按照如下的顺序加载它们:

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

?从类路径下资源或properties 元素的 url 属性中加载的属性第二被读取,它会覆盖已经存在的完全一样的属性。

?作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的属性,这些属性可能是从 properties 元素体内和资源/url 属性中加载的。

因此, 最高优先级的属性是那些作为方法参数的, 然后是资源/url 属性, 最后是properties 元素中指定的属性。

settings

这些是极其重要的调整, 它们会修改MyBatis 在运行时的行为方式。下面这个表格描述了设置信息,它们的含义和默认值。

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

cacheEnabled 这个配置使全局的映射器启用或禁用缓存。true | false true

lazyLoadingEnabled 全局启用或禁用延迟加载。当禁用时, 所有关联对象都会即

时加载。

true | false true

aggressiveLazyLoading 当启用时, 有延迟加载属性的对象在被调用时将会完全加

载任意属性。否则, 每种属性将会按需要加载。

true | false true

multipleResultSetsEnabled 允许或不允许多种结果集从一个单独的语句中返回(需要适

合的驱动)

true | false true

useColumnLabel 使用列标签代替列名。不同的驱动在这方便表现不同。参

考驱动文档或充分测试两种方法来决定所使用的驱动。

true | false true

useGeneratedKeys 允许JDBC 支持生成的键。需要适合的驱动。如果设置

为true 则这个设置强制生成的键被使用, 尽管一些驱动拒

绝兼容但仍然有效(比如Derby)

true | false False

autoMappingBehavior 指定MyBatis 如何自动映射列到字段/ 属性。PARTIAL 只

会自动映射简单, 没有嵌套的结果。FULL 会自动映射任意

复杂的结果(嵌套的或其他情况) 。NONE, PARTIAL,

FULL

PARTIAL

defaultExecutorType 配置默认的执行器。SIMPLE 执行器没有什么特别之处。

REUSE 执行器重用预处理语句。BATCH 执行器重用语句

和批量更新SIMPLE REUSE

BATCH

SIMPLE

defaultStatementT imeout 设置超时时间, 它决定驱动等待一个数据库响应的时间。Any positive integer Not Set (null) safeRowBoundsEnabled Allows using RowBounds on nested statements. true | false False

mapUnderscoreToCamelCase Enables automatic mapping from classic database column names

A_COLUMN to camel case classic Java property names

aColumn.

true | false False

localCacheScope MyBatis uses local cache to prevent circular references and

speed up repeated nested queries. By default (SESSION) all SESSION |

STATEMENT

SESSION

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

queries executed during a session are cached. If

localCacheScope=STATEMENT local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession.

jdbcTypeForNull Specifies the J DBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values like NULL, V ARCHAR or OTHER.

JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER

OTHER

lazyLoadTriggerMethods Specifies which Object's methods trigger a lazy load

A method name list separated by commas

equals,clone,hashCode,toString

一个设置信息元素的示例,完全的配置如下所示

:

typeAliases

类型别名是为 Java 类型命名一个短的名字。它只和 XML 配置有关, 只用来减少类完全限定名的多余部分。例如:

使用这个配置, ―Blog‖可以任意用来替代―domain.blog. Blog‖所使用的地方。

You can also specify a package where MyBatis will search for beans. For example:

Each bean found in domain.blog , if no annotation is found, will be registered as an alias using uncapitalized non-qualified class name of the bean. Thas is domain.blog.Author will be registered as Author . If the @Alias annotation is found its value will be used as an alias. See the example below:

对于普通的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 BigDecimal

bigdecimal BigDecimal

object Object

map Map

hashmap HashMap

list List

arraylist ArrayList

collection Collection

iterator Iterator

typeHandlers

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

类型处理器Jav a 类型JD BC 类型

BooleanTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Boolean, boolean任何兼容的布尔值

ByteTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Byte, byte 任何兼容的数字或字节类型

ShortTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Short, short任何兼容的数字或短整型

IntegerTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Integer, int任何兼容的数字和整型

LongTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Long, long任何兼容的数字或长整型

类型处理器Jav a 类型JD BC 类型

FloatTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Float, float 任何兼容的数字或单精度浮点型

DoubleTypeHandler https://www.wendangku.net/doc/304526357.html,ng.Double, double任何兼容的数字或双精度浮点型

BigDecimalTypeHandler java.math.BigDecimal任何兼容的数字或十进制小数类型

StringTypeHandler https://www.wendangku.net/doc/304526357.html,ng.String CHAR 和VARCHAR 类型

ClobTypeHandler https://www.wendangku.net/doc/304526357.html,ng.String CLOB 和LONGV ARCHAR 类型

NStringTypeHandler https://www.wendangku.net/doc/304526357.html,ng.String NVARCHAR 和 NCHAR 类型

NClobTypeHandler https://www.wendangku.net/doc/304526357.html,ng.String NCLOB 类型

ByteArrayTypeHandler byte[]任何兼容的字节流类型

BlobTypeHandler byte[]BLOB 和LONGV ARBINARY 类型

DateTypeHandler java.util.Date TIMESTAMP 类型

DateOnlyTypeHandler java.util.Date DAT E 类型

TimeOnlyTypeHandler java.util.Date TIME 类型

SqlTimestampTypeHandler java.sql.Timestamp TIMESTAMP 类型

SqlDateTypeHandler java.sql.Date DAT E 类型

SqlTimeTypeHandler java.sql.Time TIME 类型

ObjectTypeHandler Any 其他或未指定类型

EnumTypeHandler Enumeration Type VARCHAR-任何兼容的字符串类型, 作为代码存储(而不是索引) EnumOrdinalTypeHandler Enumeration Type Any compatible NUMERIC or DOUBLE, as the position is stored (not the code itself). 你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。//TODO translation needed T o do so, simply extend the

org.apache.ibatis.type.BaseTypeHandler class and optionally map your new TypeHandler class to a JDBC type. 例如:

使用这样的类型处理器将会覆盖已经存在的处理Java 的String 类型属性和VARCHAR 参数及结果的类型处理器。要注意MyBatis 不会审视数据库元信息来决定使用哪种类型, 所以你必须在参数和结果映射中指定那是VARCHAR 类型的字段,来绑定到正确的类型处理器上。这是因为MyBatis 直到语句被执行都不知道数据类型的这个现实导致的。

// TODO translation needed MyBatis will know the the Java type that you want to handle with this TypeHandler by introspecting its generic type, but you can override this behavior by two means:

?Adding a javaType attribute to the typeHandler element (for example: javaType="String")

?Adding a @MappedTypes annotation to your TypeHandler class specifying the list of java types to associate it with. This annotation will be ignored if the javaType attribute as also been specified.

Associated JDBC type can be specified by two means:

?Adding a jdbcType attribute to the typeHandler element (for example: jdbcType=VARCHAR).

Adding a @MappedJdbcTypes annotation to your TypeHandler class specifying the list of JDBC types to associate it with. This annotation will be ignored if the jdbcType attribute as also been specified.

And finally you can let MyBatis search for your T ypeHandlers:

Note that when using the autodiscovery feature JDBC types can only be specified with annotations.

objectFactory

MyBatis 每次创建结果对象新的实例时, 它使用一个 ObjectFactory 实例来完成。如果参数映射存在,默认的 ObjectFactory 不比使用默认构造方法或带参数的构造方法实例化目标类做的工作多。如果你想重写默认的 ObjectFactory,你可以创建你自己的。比如:

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

plugins

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

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

?ParameterHandler (getParameterObject, setParameters)

?ResultSetHandler (handleResultSets, handleOutputParameters)

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

这些类中方法的详情可以通过查看每个方法的签名来发现,而且它们的源代码在MyBatis 的发行包中有。你应该理解你覆盖方法的行为,假设你所做的要比监视调用要多。如果你尝试修改或覆盖一个给定的方法, 你可能会打破MyBatis 的核心。这是低层次的类和方法,要谨慎使用插件。

使用插件是它们提供的非常简单的力量。简单实现拦截器接口, 要确定你想拦截的指定签名。

上面的插件将会拦截在 Executor 实例中所有的―update‖方法调用,它也是负责低层次映射语句执行的内部对象。

NOT E 覆盖配置类

除了用插件来修改MyBatis 核心行为之外, 你也可以完全覆盖配置类。简单扩展它, 然后覆盖其中的任意方法,之后传递它到

sqlSessionFactoryBuilder.build(myConfig)方法的调用。这可能会严重影响MyBatis 的行为,所以要小心。

environments

MyBatis 可以配置多种环境。这会帮助你将SQL 映射应用于多种数据库之中。例如, 你也许为开发要设置不同的配置, 测试和生产环境。或者你可能有多种生产级数据库却共享相同的模式,所以你会想对不同数据库使用相同的SQL 映射。这种用例是很多的。

一个很重要的问题要记得:你可以配置多种环境,但你只能为每个SqlSessionFactory 实例选择一个。

所以,如果你想连接两个数据库,你需要创建两个SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,你就需要三个实例,以此类推。记忆起来很简单:

?每个数据库对应一个SqlSessionF actory

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

如果环境被忽略,那么默认环境将会被加载,如下进行:

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

注意这里的键:

?默认的环境ID(比如:default=‖development‖)。

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

?事务管理器的配置(比如:type=‖J DBC‖)。

?数据源的配置(比如:type=‖POOLED‖)。

默认的环境和环境ID 是自我解释的。你可以使用你喜欢的名称来命名,只要确定默认的要匹配其中之一。

transactionM anager

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

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

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

NOT E If you are planning to use MyBatis with Spring there is no need to configure any TransactionManager because the Spring module will set its own one overriding any previously set configuration.

这两种事务管理器都不需要任何属性。然而它们都是类型别名,要替换使用它们,你需要放置将你自己的类的完全限定名或类型别名,它们引用了你对TransactionFactory 接口的实现类。

任何在XML 中配置的属性在实例化之后将会被传递给setProperties()方法。你的实现类需要创建一个事务接口的实现,这个接口也很简单:

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

dataSource

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

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

有三种内建的数据源类型(也就是type=‖???‖):

UNPOOLED–这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢, 这是对简单应用程序的一个很好的选择, 因为它不需要及时的可用连接。不同的数据库对这个的表现也是不一样的, 所以对某些数据库来说配置数据源并不重要, 这个配置也是闲置的。 UNPOOLED 类型的数据源仅仅用来配置以下 5 种属性:

?driver–这是JDBC 驱动的Java 类的完全限定名(如果你的驱动包含,它也不是数据源类)。

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

?username–登录数据库的用户名。

?password–登录数据库的密码。

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

作为可选项,你可以传递数据库驱动的属性。要这样做,属性的前缀是以―driver.‖开头的,例如:

?driver.encoding=UTF8

这样就会传递以值―UTF8 ‖ 来传递属性― encoding ‖, 它是通过DriverManager.getConnection(url,driverProperties)方法传递给数据库驱动。

POOLED–这是JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。这是一种当前 Web 应用程序用来快速响应请求很流行的方法。

除了上述(UNPOOLED)的属性之外,还有很多属性可以用来配置 POOLED 数据源:

?poolMaximumActiveConnections–在任意时间存在的活动(也就是正在使用)连接的数量。默认值:10

?poolMaximumIdleConnections–任意时间存在的空闲连接数。

?poolMaximumCheckoutTime–在被强制返回之前,池中连接被检查的时间。默认值:20000 毫秒(也就是20 秒)

?poolTimeToWait–这是给连接池一个打印日志状态机会的低层次设置,还有重新尝试获得连接, 这些情况下往往需要很长时间为了避免连接池没有配置时静默失败)。默认值:20000 毫秒(也就是20 秒)

?poolPingQuery–发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。默认是―NO PING QUERY SET‖ ,这会引起许多数据库驱动连接由一个错误信息而导致失败。

?poolPingEnabled–这是开启或禁用侦测查询。如果开启,你必须用一个合法的SQL 语句(最好是很快速的)设置poolPingQuery 属性。默认值:false。

?poolPingConnectionsNotUsedFor–这是用来配置poolPingQuery 多次时间被用一次。这可以被设置匹配标准的数据库连接超时时间, 来避免不必要的侦测。默认值: 0(也就是所有连接每一时刻都被侦测-但仅仅当poolPingEnabled 为true 时适用)。

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

?initial_context–这个属性用来从初始上下文中寻找环境( 也就是

initialContext.lookup(initial——context) 。这是个可选属性,如果被忽略,那么 data_source 属性将会直接以initialContex t 为背景再次寻找。

?data_source–这是引用数据源实例位置的上下文的路径。它会以由 initial_context 查询返回的环境为背景来查找,如果 initial_context 没有返回结果时,直接以初始上下文为环境来查找。

和其他数据源配置相似, 它也可以通过名为―env.‖ 的前缀直接向初始上下文发送属性。比如:

?env.encoding=UTF8

在初始化之后,这就会以值―UTF8‖向初始上下文的构造方法传递名为―encoding‖ 的属性。

databaseIdProvider

MyBatis is able to execute different statements depending on your database vendor. The multi-db vendor support is based on the mapped statements databaseId attribute. MyBatis will load all statements with no databaseId attribute or with a databaseId that matches the current one. If case the same statement if found with and without the databaseId the latter will be discarded. To enable the multi vendor support add a databaseIdProvider to mybatis-config.xml file as follows:

The VENDOR implementation databaseIdProvider sets as a databaseId the String returned by DatabaseMetaData#getDatabaseProductName(). As usually that string is too long and also, different versions of the same product return different values, so you may want to translate it to a shorter one by adding properties like follows:

When properties are provided, the VENDOR databaseIdProvider will search the property value corresponding to the first key found in the returned database product name or "null" if there is not a matching property. In this case, if getDatabaseProductName() returns "Oracle (DataDirect)" the databaseId will be set to "oracle".

You can build your own database provider by implementing the interface org.apache.ibatis.mapping.DatabaseIdProvider and registerin it in mybatis-config.xml:

mappers

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

这些语句简单告诉了MyBatis 去哪里找映射文件。其余的细节就是在每个SQL 映射文件中了,下面的部分我们来讨论SQL 映射文件。

SpringMvc +Mybatis最全的配置

Springmvc+mybatis框架配置 (内含日志+多数据源配置+事务配置+maven配置)1spring-mvc.xml

Mybatis映射配置文件

XML 映射配置文件 MyBatis 的XML 配置文件包含了影响MyBatis 行为甚深的设置和属性信息。XML 文档的高层级结构如下: ?configuration 配置 ?properties 属性 ?settings 设置 ?typeAliases 类型命名 ?typeHandlers 类型处理器 ?objectFactory 对象工厂 ?plugins 插件 ?environments 环境 ?environment 环境变量 ?transactionManager 事务管理器 ?dataSource 数据源 ?databaseIdProvider chinese? ?mappers 映射器 properties 这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的Java 属性配置文件中, 或者通过properties 元素的子元素来传递。例如: 其中的属性就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。比如: 这个例子中的username 和password 将会由properties 元素中设置的值来替换。driver 和url 属性将会从包含进来的config.properties 文件中的值来替换。这里提供很多配置的选项。 属性也可以被传递到SqlSessionBuilder.build()方法中。例如:

如果在这些地方,属性多于一个的话,MyBatis 按照如下的顺序加载它们: ?在properties 元素体内指定的属性首先被读取。 ?从类路径下资源或properties 元素的 url 属性中加载的属性第二被读取,它会覆盖已经存在的完全一样的属性。 ?作为方法参数传递的属性最后被读取, 它也会覆盖任一已经存在的完全一样的属性,这些属性可能是从 properties 元素体内和资源/url 属性中加载的。 因此, 最高优先级的属性是那些作为方法参数的, 然后是资源/url 属性, 最后是properties 元素中指定的属性。 settings 这些是极其重要的调整, 它们会修改MyBatis 在运行时的行为方式。下面这个表格描述了设置信息,它们的含义和默认值。 设置参数描述有效值默认值 cacheEnabled 这个配置使全局的映射器启用或禁用缓存。true | false true lazyLoadingEnabled 全局启用或禁用延迟加载。当禁用时, 所有关联对象都会即 时加载。 true | false true aggressiveLazyLoading 当启用时, 有延迟加载属性的对象在被调用时将会完全加 载任意属性。否则, 每种属性将会按需要加载。 true | false true multipleResultSetsEnabled 允许或不允许多种结果集从一个单独的语句中返回(需要适 合的驱动) true | false true useColumnLabel 使用列标签代替列名。不同的驱动在这方便表现不同。参 考驱动文档或充分测试两种方法来决定所使用的驱动。 true | false true useGeneratedKeys 允许JDBC 支持生成的键。需要适合的驱动。如果设置 为true 则这个设置强制生成的键被使用, 尽管一些驱动拒 绝兼容但仍然有效(比如Derby) true | false False autoMappingBehavior 指定MyBatis 如何自动映射列到字段/ 属性。PARTIAL 只 会自动映射简单, 没有嵌套的结果。FULL 会自动映射任意 复杂的结果(嵌套的或其他情况) 。NONE, PARTIAL, FULL PARTIAL defaultExecutorType 配置默认的执行器。SIMPLE 执行器没有什么特别之处。 REUSE 执行器重用预处理语句。BATCH 执行器重用语句 和批量更新SIMPLE REUSE BATCH SIMPLE defaultStatementT imeout 设置超时时间, 它决定驱动等待一个数据库响应的时间。Any positive integer Not Set (null) safeRowBoundsEnabled Allows using RowBounds on nested statements. true | false False mapUnderscoreToCamelCase Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn. true | false False localCacheScope MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all SESSION | STATEMENT SESSION

Mybatis总结

Mybatis总结 1.mybatis的简单概述: 1.1mybatis简单概述: MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的XML 或注解来配置和映射原生信息,将接口和Java 的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 1.2 功能架构: 分为三层: (1).API接口层:定义api接口,外部人员通过这个接口来调用方法从而操纵数据库。 (2).数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 (3).基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数 据处理层提供最基础的支撑。 2.mybatis快速入门: a. 添加jar包: mybatis asm-3.3.1.jar cglib-2.2.2.jar commons-logging-1.1.1.jar log4j-1.2.16.jar mybatis-3.1.1.jar slf4j-api-1.6.2.jar slf4j-log4j12-1.6.2.jar mysql驱动 mysql-connector-java-5.1.7-bin.jar b. 建库+表: create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES('Tom', 12); INSERT INTO users(NAME, age) VALUES('Jack', 11);

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使用手册

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 二、mybatis快速入门 2.1、准备开发环境 1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示: 2、添加相应的jar包 【mybatis】 mybatis-3.1.1.jar 【MYSQL驱动包】 mysql-connector-java-5.1.7-bin.jar 3、创建数据库和表,针对MySQL数据库 SQL脚本如下: 1createdatabase mybatis; 2use mybatis;

3CREATETABLE users(id INTPRIMARYKEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); 4INSERTINTO users(NAME, age) VALUES('孤傲苍狼', 27); 5INSERTINTO users(NAME, age) VALUES('白虎神皇', 27); 将SQL脚本在MySQL数据库中执行,完成创建数据库和表的操作,如下: 到此,前期的开发环境准备工作全部完成。 2.2、使用MyBatis查询表中的数据 1、添加Mybatis的配置文件conf.xml 在src目录下创建一个conf.xml文件,如下图所示: conf.xml文件中的内容如下: 1 2 3 4

MyBatis 3.2.4 官方文档

MyBatis V3.2.4官方文档

目录 MyBatis3.2.4官方文档 (1) 1MyBatis 简介 (4) 2入门 (4) 2.1安装 (4) 2.2从xml构建 SqlSessionFactory (4) 2.3不使用XML构建SqlSessionFactory (5) 2.4从SqlSessionFactory中获取SqlSession (6) 2.5深入研究Mapped SQL语句 (7) 2.6命名空间说明 (7) 2.7范围和生命周期 (8) 3Configuration XML (10) 3.1properties (10) 3.2settings (11) 3.3typeAliases (13) 3.4typeHandlers (15) 3.5Handling Enums (18) 3.6objectFactory (20) 3.7plugins (20) 3.8environments (21) 3.9databaseIdProvider (25) 3.10mappers (25) 4Mapper XML Files (27) 4.1Select (28) 4.2insert,update,delete (29) 4.3sql (32) 4.4Parameters (33) 4.5String Substitution (34) 4.6ResultMap (34) 4.7Advanced Result Maps (36) 4.8鉴别discriminator (48) 4.9Auto-mapping (50) 4.10Cache (51) 5动态SQL (53) 5.1if (54) 5.2Choose(when, otherwise ) (54) 5.3Trim(where, set) (55) 5.4foreach (57) 5.5bind (57) 5.6Multi-db vendor support (57) 5.7Pluggable Scripting Languages For Dynamic SQL (58) 6Java API (59) 6.1应用目录结构 (59)

Mybatis-3.3.0官方文档-中文.pdf

来获取。

Copyright ? 2010–2015 https://www.wendangku.net/doc/304526357.html,. All rights reserved.

XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务范围和控制方式的事务管理器(TransactionManager)。XML 配置文件的详细内容后面再探讨,这里先给出一个简单的示例: 当然,还有很多可以在XML 文件中进行配置,上面的示例指出的则是最关键的部分。要注意 XML 头部的声明,用来验证 XML 文档正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的XML 文件包含了 SQL 代码和映射定义信息)。 不使用 XML 构建 SqlSessionFactory 如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。

注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免了 XML 文件的依赖。不过,由于 Java 注解的一些限制加之某些 MyBatis 映射的复杂性,XML 映射对于大多数高级映射(比如:嵌套Join 映射)来说仍然是必须的。有鉴于此,如果存在一个对等的 XML 配置文件的话,MyBatis 会自动查找并加载它(这种情况下,BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来)。具体细节稍后讨论。 从 SqlSessionFactory 中获取 SqlSession 既然有了 SqlSessionFactory ,顾名思义,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如: 诚然这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉,不过现在有了一种更直白的方式。使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。 例如: 现在我们来探究一下这里到底是怎么执行的。

Mybatis总结

Mybatis 1:Mybatis的配置 1.1如何下载Mybatis? 1.https://https://www.wendangku.net/doc/304526357.html,/mybatis/mybatis-3 2.https://https://www.wendangku.net/doc/304526357.html,/mybatis/mybatis-3/releases 1.2.如何使用Mybatis? Mybatis返回的类型是bean! 1.导入Mybatis.jar &数据库连接包! 2.创建bean(bean的属性要匹配数据库的名称) 3.写Mybatis全局配置文件 4.写Mapper(sql语句映射)文件 5.写测试类(1,引入xml文件,通过SqlSessionFactory工厂来管理)1.3.Mybatis核心代码细节 1.config全局配置文件

config.dtd">

MyBatisxml配置文件详解剖析

MyBatis xml配置文件详解 一、MyBatis 配置文件基本结构 在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。一个完全的mybatis配置文件结构如下: [html] view plain copy

mybatis入门教程(一)(超简单)

mybatis 第一天mybatis的基础知识 课程安排: mybatis和springmvc通过订单商品案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开发)问题总结 mybatis框架原理(掌握) mybatis入门程序 用户的增、删、改、查 mybatis开发dao两种方法: 原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握) mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件SqlMapConfig.xml mybatis核心: mybatis输入映射(掌握) mybatis输出映射(掌握) mybatis的动态sql(掌握) 第二天:高级知识 订单商品数据模型分析 高级结果集映射(一对一、一对多、多对多) mybatis延迟加载 mybatis查询缓存(一级缓存、二级缓存) mybaits和spring进行整合(掌握) mybatis逆向工程 1对原生态jdbc程序中问题总结 1.1环境 java环境:jdk1.7.0_72 eclipse:indigo mysql:5.1 1.2创建mysql数据

sql_table.sql:记录表结构 sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本 1.3jdbc程序 使用jdbc查询mysql数据库中用户表的记录。 创建java工程,加入jar包: 数据库驱动包(mysql5.1) 上边的是mysql驱动。 下边的是oracle的驱动。 程序代码: 1.4问题总结 1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。 设想:使用数据库连接池管理数据库连接。 2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。 3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。设想:将sql语句及占位符号和参数全部配置在xml中。

spring-mybatis.xml配置文件

spring-mybatis.xml

MyBatis 配置文件基本结构资料

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

mybatis显示sql语句 log4j.properties配置文件

mybatis显示sql语句log4j.properties配置文件 Lee ?讨论 将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试: ### 设置Logger输出级别和输出目的地### log4j.rootLogger=debug,stdout,logfile ### 把日志信息输出到控制台### log4j.appender.stdout=org.apache.log4j.ConsoleAppender #log4j.appender.stdout.Target=System.err https://www.wendangku.net/doc/304526357.html,yout=org.apache.log4j.SimpleLayout ### 把日志信息输出到文件:jbit.log ### log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=jbit.log https://www.wendangku.net/doc/304526357.html,yout=org.apache.log4j.PatternLayout https://www.wendangku.net/doc/304526357.html,yout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n ###显示SQL语句部分 https://www.wendangku.net/doc/304526357.html,.ibatis=DEBUG https://www.wendangku.net/doc/304526357.html,mon.jdbc.SimpleDataSource=DEBUG https://www.wendangku.net/doc/304526357.html,mon.jdbc.ScriptRunner=DEBUG https://www.wendangku.net/doc/304526357.html,.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG

mybatis笔记(超详细全面)

1.Mybatis入门 从一个jdbc程序开始 public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类获取数据库链接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?charac terEncoding=utf-8", "root", "mysql"); //定义sql语句 ?表示占位符 String sql = "select * from user where username = ?"; //获取预处理statement preparedStatement = connection.prepareStatement(sql); //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值 preparedStatement.setString(1, "王五"); //向数据库发出sql执行查询,查询出结果集 resultSet = preparedStatement.executeQuery(); //遍历查询结果集 while(resultSet.next()){ System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")); } } catch (Exception e) { e.printStackTrace(); }finally{ //释放资源 if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) {

mybatis入门教程-Mybatis简介与原理

【持久化框架】Mybatis简介与原理 --夜半 什么是Mybatis 资料官网:https://mybatis.github.io/mybatis-3/zh/index.html https://www.wendangku.net/doc/304526357.html,/ MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 MyBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。 MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。 MyBatis 避免了几乎所有的JDBC 代码和手工设置参数以及抽取结果集。 MyBatis使用简单的XML 或注解来配置和映射基本体,将接口和Java 的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 1、mybatis ibatis 2、主要是做数据库操作,使用java操作数据库,dao[持久化] 技术知识点 1、概念 2、基本CRUD标签 3、动态sql 4、一对多,多对一关系 5、了解注解式配置 学习内容 1、理解什么是mybatis,以及mybatis的应用场景 2、使用mybatis开发demo 3、熟悉mybatis的配置文件,以后spring的时候,没有用。 4、会使用mybatis实现简单增删改查 ①Insert delete update select 标签使用 ORM 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。 对象与数据库表之间的映射 操作对象的形式操作数据库 hibernate

mybatis-spring基本配置笔记

基本使用步骤: 1 导入jar包:mybatis-3.0.6-SNAPSHOT.jar 2 基本配置文件:Configuration.xml 文件放于com.yzy.mybatis下面 3映射文件配置:sql的语句映射

mybatis与spring的整合配置说明

mybatis是ibatis的升级版,spring也有自带mybatis的orm。所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3.0的,数据库是mysql)。下面介绍3中方式 1,只是用mybatis3。 2,使用mybatis3+spring3(使用mybatis的SqlSessionFactory )。 3,使用ibatis2.3+spring(使用spring自带的ibatis) spring的orm包中只有ibatis,没有mybatis。而mybatis和ibatis还是有些区别的,比如配置文件属性不同。 第一种方式(只使用mybatis): 1)jar包: cglib-2.2.jar asm-3.1.jar mysql-connector-java-3.1.13.jar mybatis-3.0.5.jar junit.jar 2)mybatis配置文件: [html]view plaincopy 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

mybatis从入门到精通

1、对原生态的jdbc程序问题总结 1.1 jdbc程序:使用jdbc查询mysql数据库中用户表的记录 1.2 问题: 1)数据库连接使用时创建、不使用时就释放:对数据库进行频繁的连接的创建和释放,造成数据库资源浪费,影响数据库性能---------------使用数据库连接池管理数据库连接 2)将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java 代码,不利于系统维护-------------将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译 3)向prepareStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护-------------------将sql语句及占位符和参数全部配置在xml文件中 4)从resultSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护----------------------将结果集自动映射成java对象 2、mybatis框架原理 2.1 mybatis是什么? mybatis是一个持久层框架,是apache下的顶级项目 github下:https://https://www.wendangku.net/doc/304526357.html,/mybatis/mybatis-3/releases mybatis让程序员将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql需要的sql语句 mybatis可以将向preparestatement输入的参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。 2.2 mybatis框架

相关文档