`
sassds
  • 浏览: 152731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mybatis的sql映射配置文件

阅读更多

 

 

插入后返回ID

 

<selectKey resultType="int" keyProperty="bean.id">

 select last_insert_id() as ID from users limit 1

</selectKey>

 

 

 

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 

<mapper namespace="pageAccessURL" >

 

<!--

l cache - 配置给定命名空间的缓存。

l cache-ref – 从其他命名空间引用缓存配置。

l resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。

l parameterMap – 已经被废弃了!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除。这里不会记录。

l sql – 可以重用的SQL块,也可以被其他语句引用。

l insert – 映射插入语句

l update – 映射更新语句

l delete – 映射删除语句

l select – 映射查询语句

-->

 

<!-- 默认不开启二级缓存,开启缓存<cache  eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

eviction:缓存策略 eviction = LRU、FIFO、SOFT、WEAK(默认LRU)

1)LRU:最近最少使用的:移除最长时间不被使用的对象

2)FIFO:先进先出:按对象进入缓存的顺序来移除它们。

3)SOFT:软引用:移除基于垃圾回收器状态和软引用规则的对象。

4)WEAK:弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。

    flushInterval:刷新间隔 )可以被设置为任意的正整数,而且它们代表一个合理的毫秒形式的时间段。

     默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。

    size:引用数目 可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目。默认值是1024。

    readOnly:属性可以被设置为true或false。只读的缓存会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。

    这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(通过序列化)。这会慢一些,但是安全,因此默认是false。

    ----------------------------------------------------------------------------------------------

    使用自定义缓存

<cache type=”com.domain.something.MyCustomCache”>

<property name=”cacheFile” value=”/tmp/my-custom-cache.tmp”/>

</cache>

    type属性指定的类必须实现org.mybatis.cache.Cache接口

    ----------------------------------------------------------------------------------

    引用另外的缓存<cache-ref namespace=”com.someone.application.data.SomeMapper”/>

-->

 

 

<!-- 

select元素:

1)parameterType:参数类型

2)resultType:从这条语句中返回的期望类型的类的完全限定名或别名。

注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用。

3)resultMap:命名引用外部的resultMap。返回map是MyBatis最具力量的特性,对其有一个很好的理解的话,许多复杂映射的情形就能被解决了。

使用resultMap或resultType,但不能同时使用。

4)flushCache:是否清空缓存,默认false,不清空,如果为true每次查询都会清空缓存。

5)useCache:将其设置为true,将会导致本条语句的结果被缓存。默认值:true。

6)fetchSize:这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)。

7)statementType:STATEMENT,PREPARED或CALLABLE的一种。这会让MyBatis使用选择使用

Statement,PreparedStatement或CallableStatement。默认值:PREPARED。

8)resultSetType:FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)。

-->

<!-- 这里的pageAccessURL是由typeAliases定义的 -->

 

<select id="selectPageAccessURL" parameterType="int" resultType="pageAccessURL" >

select * from tables where URL_ID = #{id}

</select>

 

<select id="selectPageAccessURLByClass" parameterType="pageAccessURL" resultType="pageAccessURL">

select * from tables where URL_ID = #{urlId} and URL = #{url}

</select>

 

<!-- 

sql:这个元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。

-->

<sql id="usercolumns">URL_ID as urlId,url,moduleId,state,mark</sql>

<select id="selectPageAccessURL2" parameterType="int" resultType="pageAccessURL">

select <include refid="usercolumns" /> 

from tables where URL_ID = #{id}

</select>

 

<!-- 动态sql语句 使用OGNL表达式-->

 

<!-- 

resultMap 元素:

1)constructor:类在实例化时,用来注入结果到构造方法中

a)idArg:ID参数;标记结果作为ID可以帮助提高整体效能

b)arg:注入到构造方法的一个普通结果

2)id:一个ID结果;标记结果作为ID可以帮助提高整体效能

3)result:注入到字段或JavaBean属性的普通结果

4)association:一个复杂的类型关联;许多结果将包成这种类型

5)collection:复杂类型的集

6)discriminator:使用结果值来决定使用哪个结果映射

a)case:基于某些值的结果映射

---------------------------------------------------        

resultMap下 id、result 元素:

    1)property:映射到列结果的字段或属性

    2)column:从数据库中得到的列名,或者是列名的重命名标签。这也是通常和会传递给resultSet.getString(columnName)方法参数中相同的字符串。

    3)javaType:一个Java类的完全限定名,或一个类型别名(参加上面内建类型别名的列表)。如果你映射到一个JavaBean,MyBatis通常可以断定类型。

    然而,如果你映射到的是HashMap,那么你应该明确地指定javaType来保证所需的行为。

    4)jdbcType:在这个表格之后的所支持的JDBC类型列表中的类型。JDBC类型是仅仅需要对插入,更新和删除操作可能为空的列进行处理。

    这是JDBC的需要,而不是MyBatis的。如果你直接使用JDBC编程,你需要指定这个类型-但仅仅对可能为空的值。

    5)typeHandler:。使用这个属性,你可以覆盖默认的类型处理器。这个属性值是类的完全限定名或者是一个类型处理器的实现,或者是类型别名。

resultMap下 constructor 元素:将查询到的对象映射到javabean时,如果javabean的构造函数有参数,则可以使用该元素来指定

resultMap下 association 元素:关联,比如查询博客和该博客的用户,通过博客关联用户,association里面就是用户属性。

resultMap下 collection 元素:集合,一个博客下有很多文章,collection就是存放文章的集合属性。

resultMap下 discriminator 元素:鉴别器,有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的结果集。

鉴别器元素就是被设计来处理这个情况的,还有包括类的继承层次结构。鉴别器非常容易理解,因为它的表现很像Java语言中的switch语句。

<resultMap id="detailedBlogResultMap" type="Blog">

<constructor>

<idArg column="blog_id" javaType="int"/>

</constructor>

<result property="title" column="blog_title"/>

<association property="author" column="blog_author_id" javaType=" Author">

<id property="id" column="author_id"/>

<result property="username" column="author_username"/>

<result property="password" column="author_password"/>

<result property="email" column="author_email"/>

<result property="bio" column="author_bio"/>

<result property="favouriteSection" column="author_favourite_section"/>

</association>

<collection property="posts" ofType="Post">

<id property="id" column="post_id"/>

<result property="subject" column="post_subject"/>

<association property="author" column="post_author_id" javaType="Author"/>

<collection property="comments" column="post_id" ofType=" Comment">

<id property="id" column="comment_id"/>

</collection>

<collection property="tags" column="post_id" ofType=" Tag" >

<id property="id" column="tag_id"/>

</collection>

<discriminator javaType="int" column="draft">

<case value="1" resultType="DraftPost">

<result property=”doorCount” column="door_count" />

</case>

</discriminator>

</collection>

</resultMap>               

-->

 

<!-- insert 元素:

1)useGeneratedKeys:这会告诉MyBatis使用JDBC的getGeneratedKeys方法来取出由数据

(比如:像MySQL和SQL Server这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。

2)keyProperty:标记一个属性(自动生成的那个属性,比如主键id),MyBatis会通过getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认:不设置。

 

-->

<insert id="insertTest" >

<!-- 

selectKey :在插入数据前先执行selectKey语句,将返回的值作为keyProperty属性值插入

1)order:这可以被设置为BEFORE或AFTER。如果设置为BEFORE,那么它会首先选择主键,设置keyProperty然后执行插入语句。

如果设置为AFTER,那么先执行插入语句,然后是selectKey元素-这和如Oracle数据库相似,可以在插入语句中嵌入序列调用。        

2)statementType:和前面的相同,MyBatis支持STATEMENT,PREPARED和CALLABLE语句的映射类型,分别代表PreparedStatement和CallableStatement类型。

-->

<selectKey keyProperty="id" resultType="int" order="BEFORE" statementType="PREPARED">

SELECT FLOOR(1 + (RAND() * 1000000));

</selectKey>

insert into table values(xx,xx);

</insert>

 

 

</mapper>

 

 

分享到:
评论

相关推荐

    MyBatis SQL映射器框架的Java.zip

    这个名为"MyBatis SQL映射器框架的Java.zip"的压缩包很可能包含了关于如何使用MyBatis进行数据库操作的详细资料。下面我们将深入探讨MyBatis的核心概念和功能。 首先,MyBatis的核心是SQL映射文件,这些文件是XML...

    Mybatis-03 SQL映射文件

    本文将深入探讨MyBatis框架中的SQL映射文件配置,主要包括以下几个方面: 1. **基本结构** SQL映射文件通常以`.xml`为扩展名,位于MyBatis项目的`resources`目录下。一个典型的SQL映射文件包含`&lt;mapper&gt;`标签,它...

    Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

    XML配置文件包含了SQL语句、结果映射等信息,而Mapper接口则提供了调用这些SQL的方法。当我们在代码中直接写SQL时,这通常涉及到`@Select`、`@Insert`、`@Update`和`@Delete`等注解的使用,这些注解允许我们在接口...

    Mybatis主配置文件、附配置文件、实体类、sql生成工具

    Mybatis 是一款轻量级的Java持久层框架,它提供了灵活的SQL映射和基于XML或注解的映射方式,使得开发者可以更加方便地操作数据库。本话题将围绕Mybatis的主配置文件、附配置文件、实体类以及SQL生成工具进行详细讲解...

    关于MyBatis找不到映射文件的问题

    在MyBatis中,映射文件是用于定义SQL语句和Java对象之间的映射关系的配置文件。通常情况下,映射文件会被放在资源目录(resources)下的某个子目录(如mapper)下。在MyBatis的核心配置文件mybatis-config.xml中,...

    mybatis动态sqlSQL 映射 XML 文件是所有 sql 语句

    mybatis动态sql:SQL 映射 XML 文件是所有 sql 语句放置的地方。需要定义一个 workspace,一般定义为对应的接口类的路径。写好 SQL 语句映射文件后需要在 MyBAtis 配置文件 mappers 标签中引用。

    MyBatis自动生成配置文件全解.zip

    在实际的开发过程中,为了提高效率,MyBatis提供了一种自动化工具,可以帮助开发者生成配置文件,包括Mapper接口、XML映射文件、实体类等。这个压缩包文件“MyBatis自动生成配置文件全解.zip”显然包含了关于如何...

    Mybatis关联映射Demo

    在实际使用中,我们需要配置Mybatis的全局配置文件`mybatis-config.xml`,指定日志工厂、数据库连接等信息。然后,在实体类中定义相应的属性,例如`@OneToOne`, `@OneToMany`, `@ManyToMany`注解,与XML映射文件中的...

    mybatis 注解+配置文件方式完整例子

    在本示例中,我们将探讨如何结合注解和配置文件使用MyBatis,包括数据库的SQL文件、方法的注解等关键部分。 首先,我们需要在项目中引入MyBatis的依赖库。通常,这可以通过在`pom.xml`或`build.gradle`文件中添加...

    Mybatis复杂映射开发开源架构源码2021.pdf

    首先,Mybatis的复杂映射通过自定义映射规则来实现,如XML配置文件中可以定义多种映射类型和行为。在自定义映射中,`&lt;collection&gt;`标签用于处理Java对象中集合类型的属性,它能够处理结果集中嵌套的多条记录,并将...

    MyBatis连接SQLServer的小例子

    这里假设你已经将mybatis-config.xml配置文件放在类路径下的某个位置,并在Spring的配置文件中指定了其位置。 接着,定义一个Mapper接口,例如UserMapper,以及对应的XML映射文件(UserMapper.xml),用于编写SQL...

    MyBatis执行SQL并将结果映射成Java对象.docx

    首先,MyBatis的配置文件分为两个部分:全局配置文件和映射文件。全局配置文件(通常为`mybatis-config.xml`)包含了数据源、事务管理器等信息,这些配置决定了MyBatis如何连接数据库以及如何处理事务。映射文件...

    MyBatis高级映射(多对多查询)

    MyBatis作为一款强大的持久层框架,为Java开发者提供了灵活的SQL映射和数据访问能力。在处理复杂的数据关系时,如多对多关联查询,MyBatis提供了高效且易用的解决方案。本篇文章将深入探讨MyBatis在处理多对多查询时...

    MyBatis注解配置映射器:动态SQL的实现

    MyBatis的注解配置使得我们在不编写XML配置文件的情况下,也能灵活地处理数据库交互。动态SQL则为我们提供了构建复杂查询的能力,可以根据业务需求动态调整SQL结构。结合使用这两种特性,我们可以更高效地开发Java...

    深入探索MyBatis:全局配置文件解析及应用优化策略

    MyBatis的全局配置文件是整个框架的核心,它包含了数据库连接池设置、SQL映射、类型别名、插件配置等多个关键元素。数据库连接池配置如Druid或C3P0,用于管理和复用数据库连接,减少资源浪费。SQL映射元素指定SQL...

    SpringMVC+Mybatis+SQLServer整合源码 含数据库文件

    Mybatis是一个轻量级的持久层框架,它提供了灵活的SQL映射功能,使得数据库操作更加简便。而SQLServer是微软公司推出的关系型数据库管理系统,广泛应用于企业级数据存储和管理。 首先,SpringMVC的核心概念包括...

    mybatis配置文件以及日志文件Log4j

    MyBatis是一个强大的Java持久层框架,它简化了数据库与Java应用之间的交互,提供了SQL映射功能,使得开发者能够自由地编写SQL语句。在"mybatis-3.4.5.zip"中,你将找到MyBatis的核心库,包括主配置文件(mybatis-...

    MyBatis和IBatis配置文件中的自动补全功能

    在开发过程中,配置文件的正确设置至关重要,因为它定义了数据库连接、映射文件的位置以及SQL语句的执行方式。本文将深入探讨如何在MyBatis和iBatis的配置文件中启用自动补全功能,以提高开发效率。 首先,我们来看...

Global site tag (gtag.js) - Google Analytics