佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > mybatis映射XML文件詳解及實例

mybatis映射XML文件詳解及實例

熱門標(biāo)簽:鐵路電話系統(tǒng) Linux服務(wù)器 AI電銷 服務(wù)外包 呼叫中心市場需求 百度競價排名 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站

mybatis映射XML文件

一個簡單的映射文件:

?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="com.cnx.wxcar.mapper.CustomerMapper">
/mapper>

當(dāng)然這個文件中沒有任何的元素

The Mapper XML files have only a few first class elements :

  1. cache – Configuration of the cache for a given namespace.
  2. cache-ref – Reference to a cache configuration from another namespace.
  3. resultMap – The most complicated and powerful element that describes how to load your objects from the database result sets.
  4. sql – A reusable chunk of SQL that can be referenced by other statements.
  5. insert – A mapped INSERT statement.
  6. update – A mapped UPDATE statement.
  7. delete – A mapped DELETE statement.
  8. select – A mapped SELECT statement.

select

簡單的例子:

select id="selectPerson" parameterType="int" resultType="hashmap">
 SELECT * FROM PERSON WHERE ID = #{id}
/select>

select也有很多屬性可以讓你配置:

select
 id="selectPerson"
 parameterType="int"
 parameterMap="deprecated"
 resultType="hashmap"
 resultMap="personResultMap"
 flushCache="false"
 useCache="true"
 timeout="10000"
 fetchSize="256"
 statementType="PREPARED"
 resultSetType="FORWARD_ONLY">

insert, update and delete

insert
 id="insertAuthor"
 parameterType="domain.blog.Author"
 flushCache="true"
 statementType="PREPARED"
 keyProperty=""
 keyColumn=""
 useGeneratedKeys=""
 timeout="20">

update
 id="updateAuthor"
 parameterType="domain.blog.Author"
 flushCache="true"
 statementType="PREPARED"
 timeout="20">

delete
 id="deleteAuthor"
 parameterType="domain.blog.Author"
 flushCache="true"
 statementType="PREPARED"
 timeout="20">

語句:

insert id="insertAuthor">
 insert into Author (id,username,password,email,bio)
 values (#{id},#{username},#{password},#{email},#{bio})
/insert>

update id="updateAuthor">
 update Author set
  username = #{username},
  password = #{password},
  email = #{email},
  bio = #{bio}
 where id = #{id}
/update>

delete id="deleteAuthor">
 delete from Author where id = #{id}
/delete>

f your database supports auto-generated key fields (e.g. MySQL and SQL Server),上面的插入語句可以寫成:

insert id="insertAuthor" useGeneratedKeys="true"
  keyProperty="id">
 insert into Author (username,password,email,bio)
 values (#{username},#{password},#{email},#{bio})
/insert>

如果你的數(shù)據(jù)庫還支持多條記錄插入,可以使用下面這個語句:

insert id="insertAuthor" useGeneratedKeys="true"
  keyProperty="id">
 insert into Author (username, password, email, bio) values
 foreach item="item" collection="list" separator=",">
  (#{item.username}, #{item.password}, #{item.email}, #{item.bio})
 /foreach>
/insert>

sql

這個element可以定義一些sql代碼的碎片,然后在多個語句中使用,降低耦合。比如:

sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password /sql>

然后在下面的語句中使用:

select id="selectUsers" resultType="map">
 select
  include refid="userColumns">property name="alias" value="t1"/>/include>,
  include refid="userColumns">property name="alias" value="t2"/>/include>
 from some_table t1
  cross join some_table t2
/select>

Result Maps

官網(wǎng)給了個最最復(fù)雜的例子

大體意思呢就是一個博客系統(tǒng)有一個作者,很多博文,博文中有一個作者,很多評論,很多標(biāo)簽(包括了一對多,一對一)

!-- Very Complex Statement -->
select id="selectBlogDetails" resultMap="detailedBlogResultMap">
 select
    B.id as blog_id,
    B.title as blog_title,
    B.author_id as blog_author_id,
    A.id as author_id,
    A.username as author_username,
    A.password as author_password,
    A.email as author_email,
    A.bio as author_bio,
    A.favourite_section as author_favourite_section,
    P.id as post_id,
    P.blog_id as post_blog_id,
    P.author_id as post_author_id,
    P.created_on as post_created_on,
    P.section as post_section,
    P.subject as post_subject,
    P.draft as draft,
    P.body as post_body,
    C.id as comment_id,
    C.post_id as comment_post_id,
    C.name as comment_name,
    C.comment as comment_text,
    T.id as tag_id,
    T.name as tag_name
 from Blog B
    left outer join Author A on B.author_id = A.id
    left outer join Post P on B.id = P.blog_id
    left outer join Comment C on P.id = C.post_id
    left outer join Post_Tag PT on PT.post_id = P.id
    left outer join Tag T on PT.tag_id = T.id
 where B.id = #{id}
/select>

!-- Very Complex Result Map -->
resultMap id="detailedBlogResultMap" type="Blog">
 constructor>
  idArg column="blog_id" javaType="int"/>
 /constructor>
 result property="title" column="blog_title"/>
 association property="author" 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" javaType="Author"/>
  collection property="comments" ofType="Comment">
   id property="id" column="comment_id"/>
  /collection>
  collection property="tags" ofType="Tag" >
   id property="id" column="tag_id"/>
  /collection>
  discriminator javaType="int" column="draft">
   case value="1" resultType="DraftPost"/>
  /discriminator>
 /collection>
/resultMap>

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • mybatis框架的xml映射文件常用查詢指南
  • mybatis的mapper.xml中resultMap標(biāo)簽的使用詳解
  • 淺談mybatis mapper.xml文件中$和#的區(qū)別
  • MyBatis中XML 映射文件中常見的標(biāo)簽說明

標(biāo)簽:黃山 崇左 仙桃 衡水 湖南 銅川 湘潭 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mybatis映射XML文件詳解及實例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    外汇| 景德镇市| 神木县| 都江堰市| 孝义市| 江达县| 蓝田县| 元谋县| 浦县| 金坛市| 屏山县| 曲沃县| 日土县| 高碑店市| 合江县| 灵石县| 青冈县| 石门县| 临猗县| 砀山县| 永修县| 奉新县| 济阳县| 辽宁省| 株洲县| 庆元县| 泗洪县| 青田县| 卢龙县| 甘泉县| 金川县| 临颍县| 太谷县| 峨边| 澄迈县| 五常市| 周至县| 乌兰浩特市| 会宁县| 驻马店市| 稻城县|