mybatis SQL映射配置文件
罗列Mapper中最常用部分
标签常见属性(备忘)
<select
id=""
parameterType=""
parameterMap=""
resultType=""
resultMap=""
flushCache=""
useCache=""
timeout=""
fetchSize=""
statementType=""
resultSetType=""
>
<insert
id=""
parameterType=""
flushCache=""
statementType=""
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout=""
>
<update
id=""
parameterType=""
flushCache=""
timeout=""
statementType=""
>
<delete
id=""
parameterType=""
flushCache=""
timeout=""
statementType=""
>
参数样例
<delete id = "deleteUser" parameterType="User">
delete from user_table
where age = {age,javaType=int,jdbcType=NUMERIC,typeHandler=AgeTypeHandler}
<delete>
resultType、resultMap、discriminator
resultType :
- 支持基本数据类型、基本数据包装类,支持自定义实体类(列名与包装类中的属性名至少有一个一致--->创建包装类对象)
- 一般来说resultType所指的输出类型是一种Java的原始或包装类型,并且从数据库取出的字段名称无须任何转换
- 如果没有合适的JavaBean,还可以是HashMap类型的数据,讲输出的字段名称作为map的key,value为字段值。如果是集合,那是因为list里面嵌套HashMap
resultMap:
提供一种SQL结果输出映射类型。即建立列名和实体类属性之间的映射关系
一般来说列名和属性不一致,有时还需要制定相应的数据类型
复杂用法
- 关联的嵌套结果 association标签 :声明映射的Java类型中包含的其他Java类的属性
- 集合的嵌套结果 collection标签 :声明映射的Java类中的包含的集合类型
discriminator:
有时候需要根据某个字段的值,来决定关联哪种结果集。eg.根据 性别标志来决定关联男生类还是女生类。
自动映射
- 如果SQL语句查询的结果中有列名与Java包装类中的属性名一致,则该字段就会被映射到该属性上。如果有一部分不一致,那么之后需要在resultMap中指定这部分的映射。
- 如果在resultMap中不希望自动映射配置外的其他字段,设置autoMapping=false。优先级高于,下面的三种模式
- 很多时候数据库的明明规则和Java是不一样的,在全局配置文件中配置 mapUnderscoreToCamelCase属性为true,自动映射数据库下划线字段和Java的驼峰属性,想想就不自觉地露出微笑。
三种模式:
- NONE 不启用自动映射
- PARTIAL 嵌套的resultMap不启用自动映射
- FULL 所有resultMap都启用自动映射
动态SQL语句
<if test>
<foreach>
<!--简单例子-->
<mapper namespace=" ">
<insert
parameterType="输入参数类型"
parameterMap="输入参数集合"
resultType="结果类型"
resultClass="结果类"
resultMap= "结果集合">
</insert>
<select id="findUserById" parameterType="int" resultType="User" >
select * from user_table where id = #{id}
</select>
<select id="findUserByName" parameterType="String" resultType="User" >
select * from user_table where user_name Like '%${value}%'
</select>
<insert id = "insertUser" parameterType="User" >
<selectKey keyProperty="id" order="BEFORE" resultType="String">
select 序列名.nextval()
</selectKey>
insert into user()
values()
</insert>
//update返回执行之后被改变的信息条数
<update id="updateUserById" parameterType="User" >
update user_table set user_name=#{username} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="Integer" >
delete from user_table where id = #{id}
</delete>
</mapper>
mybatis SQL映射配置文件的更多相关文章
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- Mybatis sql映射文件浅析 Mybatis简介(三) 简介
Mybatis sql映射文件浅析 Mybatis简介(三) 简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...
- Mybatis SQL映射文件详解
Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...
- MyBatis XML 映射配置文件
配置文件的基本结构 configuration —— 根元素 properties —— 定义配置外在化 settings —— 一些全局性的配置 typeAliases —— 为一些类定义别名 ty ...
- mybatis~SQL映射
student.xml里面是这么写的: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE m ...
- MyBatis -- sql映射文件具体解释
MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...
- SSM - Mybatis SQL映射文件
MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给 ...
- Mybatis XML 映射配置文件 -- 熟悉配置
来源:http://www.mybatis.org/mybatis-3/zh/configuration.html properties mybatis读取属性顺序. 如果属性在不只一个地方进行了配置 ...
- MyBatis 创建核心配置文件和 SQL 映射文件
Mybatis 的两个配置文件(mybatis-config.xml 和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...
随机推荐
- python之九九乘法表
for i in range(1,10): print( ) for j in range(1,i+1): print('%d*%d=%d '%(i,j,i*j),end="") ...
- Quick setup
Quick setup — if you’ve done this kind of thing before We recommend every repository include a READM ...
- ios下元素溢出设置 overflow:auto; 不能滑动解决办法
ios下元素溢出设置 overflow:auto; 不能滑动解决办法: overflow:auto; overflow-y:scroll; -webkit-overflow-scrolling:tou ...
- 404 Note Found 队-课堂实战-项目UML设计
目录 团队信息 分工选择 课上分工 课下分工 ToDolist alpha版本要做的事情 燃尽图 UML 用例图 状态图 活动图 类图 部署图 实例图 对象图 时序图 包图 通信图 贡献分评定 课上贡 ...
- 轻量ORM-SqlRepoEx (十二)SqlRepoEx 2.0.1 至 2.2.0 版本更新说明
一.功能变化 (一).强化特性支持 1.部分类型拥有复杂属性: 2.有些属性不是来源于数据库 3.用户在原来的代码中使用 SqlRepoEx ,减少字段与数据库字段之间的冲突: 4.为支持新的特性及优 ...
- jquery 60s倒计时
前端开发中经常用到的发送按钮倒计时,每次都是重写,挺麻烦的,记录一下,以后直接来复制代码 <!DOCTYPE html> <html> <head> <met ...
- C语言不定型参数函数定义
我们在C语言中定义一个函数,通常都是需要在函数原型中规定这个函数需要提供什么类型的参数以及需要提供多少个.也就是,你的参数必须明确.但是我们调用函数库中的printf和scanf函数会发现,它们似乎是 ...
- 基于R实现k-means法与k-medoids法
k-means法与k-medoids法都是基于距离判别的聚类算法.本文将使用iris数据集,在R语言中实现k-means算法与k-medoids算法. k-means聚类 首先删去iris中的Spec ...
- lncRNA芯片重注释
.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table ...
- java入门---循环结构 - for, while 及 do...while&break&continue
顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构.Java中有三种主要的循环结构: while 循环 do…while 循环 for 循环 在Jav ...