MyBatis知识二 配置文件解析一

来源:互联网 发布:战地使命召唤知乎 编辑:程序博客网 时间:2024/05/29 18:41

这里我们首先分析的是对于类与数据库之间的映射配置文件,不是总配置文件。

看下列配置文件:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//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: 指定返回的对象类型

原创粉丝点击