共计 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 行业资讯频道!