MyBatis知识二 配置文件解析一
2017-07-05 21:35
246 查看
这里我们首先分析的是对于类与数据库之间的映射配置文件,不是总配置文件。
看下列配置文件:
井{id} id 表示接收输入值的参数,参数名称是id,如果输入参数是简单类型,#{}中的参数名称可以是任意的。可以是value或者其他。而如果传入的参数不为简单类型,那么括号里面的属性必须为value。
${ } 表示不加任何修饰的拼接SQL串,将传入的参数直接拼接到我们的SQL语句中,利用的是拼接而不是占位符
上面的代码,第一句是自增主键的主键获取,而对于第二个,则是在进行插入时生成的非自增的uuid的字符串的主键。注意order的属性值。
keyProperty属性:selectKey 语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
order 属性: 指定语句执行顺序,相当于INSERT语句来说的执行顺序
resultType: 指定返回的对象类型
看下列配置文件:
<?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知识系列之三:MyBatis的配置文件:mybatis.cfg.xml和xxx.mapper.xml文件的解析
- Mybatis实现【3】-初始化(配置文件读取和解析)
- Mybatis3配置文件解析
- (二)MyBatis源码解析之配置文件
- mybatis实现物理分页准备之mybatis配置文件解析及实例
- MyBatis理论知识(二)XML 映射配置文件
- mybatis3 配置文件解析
- Mybatis原理学习3:Mybatis的初始化(配置文件的读取和解析)
- (三)MyBatis源码解析之配置文件
- Mybatis之XML配置文件解析
- mybatis-Config.xml全局配置文件解析
- MyBatis关于Mapper配置文件知识集合
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis generator tools配置文件解析
- mybatis底层源码分析之--配置文件读取和解析
- MyBatis的配置文件解析
- Mybatis3源码分析(三):解析mapper的xml配置文件
- mybatis配置文件解析错误解决方法
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- mybatis 3.4.2 启动过程-配置文件的解析与SqlSessionFactory的获得