亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis映射XML文件詳解及實例

 更新時間:2017年03月31日 12:00:04   投稿:lqh  
這篇文章主要介紹了mybatis映射XML文件詳解及實例的相關資料,需要的朋友可以參考下

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>

當然這個文件中沒有任何的元素

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)給了個最最復雜的例子

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

<!-- 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>

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

相關文章

  • 樹形結構數(shù)據(jù)庫表Schema設計的兩種方案

    樹形結構數(shù)據(jù)庫表Schema設計的兩種方案

    程序設計過程中,我們常常用樹形結構來表征某些數(shù)據(jù)的關聯(lián)關系,如企業(yè)上下級部門、欄目結構、商品分類等等,下面這篇文章主要給大家介紹了關于樹形結構數(shù)據(jù)庫表Schema設計的兩種方案,需要的朋友可以參考下
    2021-09-09
  • 如何讓SQL運行得更快

    如何讓SQL運行得更快

    如何讓SQL運行得更快...
    2007-01-01
  • Win2003系統(tǒng)安裝SQL Server2000后1433端口未開放的解釋

    Win2003系統(tǒng)安裝SQL Server2000后1433端口未開放的解釋

    這篇文章主要介紹了Win2003系統(tǒng)安裝SQL Server2000后1433端口未開放的解釋
    2007-02-02
  • 大數(shù)據(jù)時代的數(shù)據(jù)庫選擇:SQL還是NoSQL?

    大數(shù)據(jù)時代的數(shù)據(jù)庫選擇:SQL還是NoSQL?

    執(zhí)行大數(shù)據(jù)項目的企業(yè)面對的關鍵決策之一是使用哪個數(shù)據(jù)庫,SQL還是NoSQL?SQL有著驕人的業(yè)績,龐大的安裝基礎;而NoSQL正在獲得可觀的收益,且有很多支持者。我們來看看兩位專家對這個問題的看法
    2014-03-03
  • 關于面試中常問的數(shù)據(jù)庫回表問題

    關于面試中常問的數(shù)據(jù)庫回表問題

    這篇文章主要介紹了關于面試中常問的數(shù)據(jù)庫回表問題,回表就是先通過數(shù)據(jù)庫索引掃描出數(shù)據(jù)所在的行,再通過行主鍵id取出索引中未提供的數(shù)據(jù),即基于非主鍵索引的查詢需要多掃描一棵索引樹,需要的朋友可以參考下
    2023-07-07
  • MyBatis獲取數(shù)據(jù)庫自生成的主鍵Id詳解及實例代碼

    MyBatis獲取數(shù)據(jù)庫自生成的主鍵Id詳解及實例代碼

    這篇文章主要介紹了MyBatis獲取數(shù)據(jù)庫自生成的主鍵Id詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-05-05
  • 利用DataSet部分功能實現(xiàn)網(wǎng)站登錄

    利用DataSet部分功能實現(xiàn)網(wǎng)站登錄

    這篇文章主要介紹了利用DataSet部分功能實現(xiàn)網(wǎng)站登錄 ,需要的朋友可以參考下
    2017-05-05
  • dba_indexes視圖的性能分析

    dba_indexes視圖的性能分析

    前端時間,在監(jiān)控系統(tǒng)中加入了index的狀態(tài)是否為unusable,以及其并行度是否有設置的監(jiān)控:
    2008-08-08
  • SQL表連接圖解

    SQL表連接圖解

    估計很多人在學習SQL表連接的時候都會被各種類型的表連接搞得稀里糊涂的,現(xiàn)在好了,有了下面的圖,就可以很直觀的區(qū)分各種表連接了
    2014-12-12
  • 90%程序員面試會遇到的索引優(yōu)化問題

    90%程序員面試會遇到的索引優(yōu)化問題

    不管是用C/C++/Java等代碼編寫的程序,還是SQL編寫的數(shù)據(jù)庫腳本,都存在一個持續(xù)優(yōu)化的過程。也就是說,代碼優(yōu)化對于程序員來說,是一個永恒的話題。下面這篇文章主要給大家總結介紹了90%程序員在面試的時候會遇到的索引優(yōu)化問題,需要的朋友可以參考下。
    2017-11-11

最新評論