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 ...
随机推荐
- shell脚本执行
方法一:切换到shell脚本所在的目录执行shell脚本: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应 ...
- python执行linux和window的命令
linux: python执行shell脚本常用的方法 import os val=os.system("shell语句") >>> val=os.system ...
- Semtech 的 137-1050 MHz 超低功耗长距离收发器(SX1276 Long Range Transceiver)
SX1276 收发器采用 LoRa? 长距离调制解调器,可实现超长距离扩频通信和高抗干扰能力,并将电流消耗降至最低.凭借 Semtech 专利的 LoRa 调制技术,SX1276 使用低成本晶体和物料 ...
- C#简单实现LRU缓存
最近跟同学吃饭扯淡的时候,由技术扯到薪资,又由薪资扯到他找工作时跟面试官是怎么扯淡拿高工资的,各种技术一顿侃,总之只要啥都了解就没问题了.谈到缓存的时候,我试探性的问了问- -你还记得LRU怎么写吗, ...
- 算法学习记录-查找——平衡二叉树(AVL)
排序二叉树对于我们寻找无序序列中的元素的效率有了大大的提高.查找的最差情况是树的高度.这里就有问题了,将无序数列转化为 二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况. [如 ...
- 容易忽略的expect脚本问题,暗藏的僵尸进程,wait命令不要漏掉
问题描述 前几天有个小需求,用到expect脚本去循环的发送一些数据,主要问题代码如下: #! /usr/bin/expect while {true} { set timeout 60 spawn ...
- C++练习 | 求解二叉树的高度
int h(BTree *bt) { if(bt->lchild==NULL&&bt->rchild==NULL) ; if(bt->lchild!=NULL& ...
- 实施erp的建议
纺织行业实施ERP建议 (一)企业各层面应提高对ERP的认识 ERP项目的实施范围横跨企业的每一个部门,在实施过程中需要调动各个部门的资源,这首先需要企业领导者高度重视,从实施的各个环节给予支持:其次 ...
- Mysql浅析-基础命令(一)
主要从以上篇幅来介绍mysql的一些知识点 一.Mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数 ...
- 简易高效的Delphi原子队列
本文提供Delphi一个基于原子操作的无锁队列,简易高效.适用于多线程大吞吐量操作的队列. 可用于Android系统和32,64位Windows系统. 感谢歼10和qsl提供了修改建议! 有如下问题: ...