您的位置:首页 > 其它

MyBatis知识二 配置文件解析一

2017-07-05 21:35 246 查看
这里我们首先分析的是对于类与数据库之间的映射配置文件,不是总配置文件。

看下列配置文件:

<?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="user">

<select id="selectById" parameterType="int"  resultType="com.wf.model.User">
<!-- select * from User where id = #{id} -->
<!-- select * from User where id = #{value} -->
select * from User where id = #{hehe}
</select>

<select id="selectByName" parameterType="java.lang.String" resultType="com.wf.model.User">
select * from User where username like '%${value}%'
</select>

<insert id="insertUser" parameterType="com.wf.model.User">
<!-- insert into user value (#{id},#{username},#{birthday},#{sex},#{address}) -->
insert into user value (null,#{username},#{birthday},#{sex},#{address})
<!-- 字段必须全部写完,即使是自增的也要写上,或者利用null代替 -->
</insert>

<insert id="insertUserAndCheckID" parameterType="com.wf.model.User">
<selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>

<insert id="insertUserAndCheckIDFree" parameterType="com.wf.model.User">
<selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
select uuid()
</selectKey>
insert into user value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>

<delete id="deleteuserwithid" parameterType="java.lang.Integer">
delete from user where id=#{id}
</delete>

<update id="updateuserwithid" parameterType="com.wf.model.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},
address=#{address} where id=#{id}
</update>

</mapper>


NameSpace属性

namespace的作用,首先在没有利用Mapper代理开发的时候,他的作用仅仅是用来进行模块化划分,对SQL进行分类化管理,隔离SQL,但是我们如果使用了Mapper代理进行开发的时候,我们就是根据我们的namespace的类全名称进行我们的接口与配置文件之间的映射,用来指定映射的接口。

增删改查标签

INSERT,DELETE,UPDATE,SELECT ,标签用来标识此时的SQL语句的操作。

ID属性

id属性标识映射文件的sql,用来唯一标示此SQL语句的身份特质,一般在代码的Dao层会进行SQL语句的执行,此时就是根据这个NameSpace和ID用来唯一标示要执行的SQL语句。

parameterType属性

指定输入参数的类型,可以是基本类型,也可以是封装类型,一般情况在在传递一个参数时,我们只需要进行单个参数的类型入int,String等设定即可,但是,对于多参数的传递,我们都会将其封装成一个对象,然后将这个对象传递到我们的SQL语句中。

resultType属性

resultType,指定SQL输出结果的所映射的java对象类型,也就是这个属性,将我们数据库中的一条记录对应成我们的一个Java对象,如果查询的结果是一个List列表的形式,我们利用此属性只需要指定List集合中的对象属性即可。

井{ }和${ }

在一般的属性传值中,我们的 #{} 表示一个占位符号,而${} 表示不加任何修饰的拼接SQL串

井{id} id 表示接收输入值的参数,参数名称是id,如果输入参数是简单类型,#{}中的参数名称可以是任意的。可以是value或者其他。而如果传入的参数不为简单类型,那么括号里面的属性必须为value。

${ } 表示不加任何修饰的拼接SQL串,将传入的参数直接拼接到我们的SQL语句中,利用的是拼接而不是占位符

<!--简单类型 任意-->
<select id="selectById" parameterType="int"  resultType="com.wf.model.User">
<!-- select * from User where id = #{id} -->
<!-- select * from User where id = #{value} -->
select * from User where id = #{hehe}
</select>

<!--复杂类型 value -->
<select id="selectByName" parameterType="java.lang.String" resultType="com.wf.model.User">
select * from User where username like '%${value}%'
</select>


selectKey标签—主键的返回

selectKey子标签,对于在插入的同时获取插入的id值,用于外键的插入

<insert id="insertUserAndCheckID" parameterType="com.wf.model.User">
<selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>

<insert id="insertUserAndCheckIDFree" parameterType="com.wf.model.User">
<selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">
select uuid()
</selectKey>
insert into user value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>


上面的代码,第一句是自增主键的主键获取,而对于第二个,则是在进行插入时生成的非自增的uuid的字符串的主键。注意order的属性值。

keyProperty属性:selectKey 语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

order 属性: 指定语句执行顺序,相当于INSERT语句来说的执行顺序

resultType: 指定返回的对象类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis