在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

mybatis映射XML文件的示例分析

203次阅读
没有评论

共计 4731 个字符,预计需要花费 12 分钟才能阅读完成。

这篇文章主要介绍 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 :

cache – Configuration of the cache for a given namespace.

cache-ref – Reference to a cache configuration from another namespace.

resultMap – The most complicated and powerful element that describes how to load your objects from the database result sets.

sql – A reusable chunk of SQL that can be referenced by other statements.

insert – A mapped INSERT statement.

update – A mapped UPDATE statement.

delete – A mapped DELETE statement.

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

如果你的数据库还支持多条记录插入,可以使用下面这个语句:

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

官网给了个最最复杂的例子

大体意思呢就是一个博客系统有一个作者,很多博文,博文中有一个作者,很多评论,很多标签(包括了一对多,一对一)

!-- 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 文件的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计4731字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久久久欧美激情 | 伊人免费视频二 | 久久人妻少妇嫩草av无码专区 | 欧美a级成人网站免费 | 亚洲av乱码久久精品蜜桃 | 久久99九九99九九99精品 | 成人午夜看片在线观看 | 99热这里只有精品国产动漫 | 久久综合99 | 欧美丰满熟妇bbbbbb | 一级一级特黄女人精品毛片 | 日韩一区二区超清视频 | 日韩一区二区三区四区不卡 | 农村偷人一级超爽毛片 | 亚洲日韩精品a∨片无码加勒比 | 日韩精品视频在线播放 | 天堂在线中文网 | 99热久久这里只有精品2010 | 人成精品视频三区二区一区 | 欧洲熟妇色xxxx欧美老妇软件 | 一区二区三区欧美日韩国产 | 青青草视频国产 | 老师露出两个奶球让我吃奶头 | 色妞av永久一区二区国产av | 直接进入免费看黄的网站 | 中文字幕欧洲有码无码 | 四虎影视库 | 日韩精品一区二区三区四区 | 黄色三级在线 | 欧美大尺度aaa级毛片 | 国产亚洲综合成人91精品 | 亚洲欧美日韩不卡一区二区三区 | 久播影院免费理论片成年看 | 国产av影片麻豆精品传媒 | 亚洲色播爱爱爱爱爱爱爱 | 国产亚洲精品va在线 | 一边啪啪一边呻吟av夜夜嗨 | 久久精品国产在热久久2019 | 97成人在线观看 | 九九九热精品 | a国产一区二区免费入口 |