罗列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 :

  1. 支持基本数据类型、基本数据包装类,支持自定义实体类(列名与包装类中的属性名至少有一个一致--->创建包装类对象)
  2. 一般来说resultType所指的输出类型是一种Java的原始或包装类型,并且从数据库取出的字段名称无须任何转换
  3. 如果没有合适的JavaBean,还可以是HashMap类型的数据,讲输出的字段名称作为map的key,value为字段值。如果是集合,那是因为list里面嵌套HashMap

resultMap:

  1. 提供一种SQL结果输出映射类型。即建立列名和实体类属性之间的映射关系

  2. 一般来说列名和属性不一致,有时还需要制定相应的数据类型

    复杂用法

    1. 关联的嵌套结果 association标签 :声明映射的Java类型中包含的其他Java类的属性
    2. 集合的嵌套结果 collection标签 :声明映射的Java类中的包含的集合类型

discriminator:

有时候需要根据某个字段的值,来决定关联哪种结果集。eg.根据 性别标志来决定关联男生类还是女生类。

自动映射

  1. 如果SQL语句查询的结果中有列名与Java包装类中的属性名一致,则该字段就会被映射到该属性上。如果有一部分不一致,那么之后需要在resultMap中指定这部分的映射。
  2. 如果在resultMap中不希望自动映射配置外的其他字段,设置autoMapping=false。优先级高于,下面的三种模式
  3. 很多时候数据库的明明规则和Java是不一样的,在全局配置文件中配置 mapUnderscoreToCamelCase属性为true,自动映射数据库下划线字段和Java的驼峰属性,想想就不自觉地露出微笑。

三种模式:

  1. NONE 不启用自动映射
  2. PARTIAL 嵌套的resultMap不启用自动映射
  3. 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映射配置文件的更多相关文章

  1. Mybatis sql映射文件浅析 Mybatis简介(三)

    简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...

  2. Mybatis sql映射文件浅析 Mybatis简介(三) 简介

    Mybatis sql映射文件浅析 Mybatis简介(三)   简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...

  3. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  4. MyBatis XML 映射配置文件

    配置文件的基本结构 configuration —— 根元素 properties —— 定义配置外在化 settings —— 一些全局性的配置 typeAliases —— 为一些类定义别名 ty ...

  5. mybatis~SQL映射

    student.xml里面是这么写的: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE m ...

  6. MyBatis -- sql映射文件具体解释

    MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...

  7. SSM - Mybatis SQL映射文件

    MyBatis 真正的力量是在映射语句中.和对等功能的jdbc来比价,映射文件节省很多的代码量.MyBatis的构建就是聚焦于sql的. sql映射文件有如下几个顶级元素:(按顺序) cache配置给 ...

  8. Mybatis XML 映射配置文件 -- 熟悉配置

    来源:http://www.mybatis.org/mybatis-3/zh/configuration.html properties mybatis读取属性顺序. 如果属性在不只一个地方进行了配置 ...

  9. MyBatis 创建核心配置文件和 SQL 映射文件

    Mybatis 的两个配置文件(mybatis-config.xml  和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...

随机推荐

  1. 将form表单元素的值序列化成对象

    /**jQuery * 将form表单元素的值序列化成对象 * @returns object */ var serializeObject = function(form) { var o = {} ...

  2. nginx开启gzip

    gzip on; gzip_min_length 5k; gzip_buffers 4 16k; #gzip_http_version 1.0; gzip_comp_level 3; gzip_typ ...

  3. PAT——1052. 卖个萌

    萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出 ...

  4. 指定Android adb的启动端口

    串口执行: setprop service.adb.tcp.port stop adbd start adbd 一般机器默认是5555为adb端口,但是今天遇到的一台机器以5037为默认端口,开发机器 ...

  5. centos 腾讯云 今天买了 18个月

    1.安装开发编译工具包 yum groupinstall "Development Tools" 2.查看Linux 下用户 对系统资源的占用情况,root表示用户 top -u ...

  6. 【原创】修改Sqoop1.4.6源码实现--fields-terminated-by选项支持多字节分隔符

    修改Sqoop1.4.6源码实现--fields-terminated-by选项支持多字节分隔符 最近项目中需要使用sqoop实现oracle与hdfs的数据交换,从oracle数据表导入到hdfs集 ...

  7. iOS 隐私政策

    我们深知个人信息对您的重要性,您的信任对我们非常重要.本应用尊重并保护所有使用服务用户的个人隐私权.您在使用我们的产品与/或服务时,我们可能会收集和使用您的相关信息.我们将按法律法规要求,采取相应安全 ...

  8. react 第一个组件 “hello world!”

    一:在src下面新建Welcome.js 二:在Welcome.js中使用类式写法: import React from "react" class Welcome extends ...

  9. MySQLFront导入SQL文件报#1113错误解决

  10. Field Security Profile Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Messages; /// <summary> /// 安全字 ...