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

mybatis映射XML文件的示例分析

216次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久草热久草视频 | 亚洲综合精品一区二区三区 | 91精品酒店情侣在线播放 | 91精品国产麻豆福利在线 | 韩国一级毛片视频免费观看 | 国产a级一级久久毛片 | 欧美一级特毛片 | 成人区精品一区二区毛片不卡 | 蜜臀av在线观看 | 午夜福利啪啪片 | 99国产精品免费视频 | 女人被狂躁c到高潮喷水一区二区 | 麻豆福利在线 | 999插插插| 久久精品国产99国产精品小说 | 亚洲国产精品久久久久网站 | 国产三级在线视频播放线 | 欧美日韩国产在线观看 | 麻豆md0077饥渴少妇 | 亚洲最新在线观看 | 欧美亚洲激情视频 | 国产乱来乱子视频 | 久久996国产精品免费 | 免费的一级毛片 | 久久美女精品国产精品亚洲 | 免费视频黄 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲第6页 | 狠狠的进入 | 中文精品无码中文字幕无码专区 | 国产黄色片免费看 | 成人午夜性a级毛片免费 | 亚洲av成人一区二区三区观看 | 精品人妻中文无码av在线 | 99视频在线精品 | 精品手机在线 | 免费看的一级片 | 亚洲av乱码一区二区三区林ゆな | 成人三级在线播放线观看 | 日韩a| 操操操综合网 |