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

mybatis映射XML文件的示例分析

171次阅读
没有评论

共计 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无码精品 | 中文字幕一区二区三区四区五区 | 男男羞羞视频网站免费 | 欧美一级大尺度毛片 | 亚洲精品第五页 | 欧美 另类 精品一区视频 | 色无极亚洲色图 | 中文字幕无码不卡在线 | 亚洲熟妇无码一区二区三区 | 日本视频免费看 | 日韩欧美亚洲另类 | 国产高清av首播原创麻豆 | 肉体裸交丰满丰满少妇在线观看 | 情人伊人久久综合亚洲 | avtt天堂网 手机资源 | 精品国产一区二区三区www | 亚洲欧美在线免费观看 | 熟女丝袜潮喷内裤视频网站 | 草草免费| 久草久草 | 亚洲在线影院 | 中文字幕在线高清 | 日韩欧美国产一区二区三区四区 | 久久夜色精品国产亚洲av动态图 | 久热精品香蕉在线视频 | 高清视频一区二区三区 | 人人澡人人曰人人摸看 | 97年美女害羞反抗酒店 | 在线观看国产精品电影 | 亚洲色欲久久久久综合网 | 毛片毛片免费看 | 久久久国产99久久国产首页 | 日韩亚洲人成网站在线播放 | 在线观看亚洲专区 | 亚洲精品456 | 精品国产一区二区三区四区阿崩 | 天天撸日日夜夜 | 欧美日韩在线精品一区二区三区 | 日韩av爽爽爽久久久久久 |