罗列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. Spring(八)之基于Java配置

    基于 Java 的配置 到目前为止,你已经看到如何使用 XML 配置文件来配置 Spring bean.如果你熟悉使用 XML 配置,那么我会说,不需要再学习如何进行基于 Java 的配置是,因为你要 ...

  2. JNI由浅入深_10_JNI 综合开发

    1.使用ndk-build时如果找不到某个类,可以使用下面两种方法解决: 1.1 进入src目录 D:\project3\JNIAndroid\src>set classpath=D:\proj ...

  3. 如何转换Xcode里打印的unicode编码日志

    转换Xcode里打印的unicode编码日志 1)打开Terminal 2)输入python 3)print(u'\u6027\u611f\u597d\u83b1\u575e\u5973\u661f\ ...

  4. java Activiti6 工作流引擎 websocket 即时聊天 SSM源码 支持手机即时通讯聊天

    即时通讯:支持好友,群组,发图片.文件,消息声音提醒,离线消息,保留聊天记录 (即时聊天功能支持手机端,详情下面有截图) 工作流模块---------------------------------- ...

  5. DBA手记(学习)-RAC环境下GES TX报警情况处理

    GES ... TX-... GES的全称是Global Enqueue Service,用于RAC环境的全局共享队列.从提示信息可以看出,目前的锁定是DML引发的行级锁(TX). 检查v$lock_ ...

  6. android学习:关于RelativeLayout叠放布局的问题

    RelativeLayout布局关于元素叠加的问题 1.RelativeLayout布局中的元素如果要实现元素叠加必须设置  RelativeLayout.ALIGN_PARENT_TOP  这样元素 ...

  7. generate failed: Cannot resolve classpath entry: mysql-connector-java-5.1.38.jar

    详细错误及处理方法如下: [ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3 ...

  8. python if-elif-else 结构判断输入值处于何种年龄段

    输入变量 age 的值,再编写一个 if-elif-else 结构,根据 age的值判断处于人生的哪个阶段.如果一个人的年龄小于 2岁,就打印一条消息,指出他是婴儿.如果一个人的年龄为 2(含)-4岁 ...

  9. 局域网内python socket实现windows与linux间简单的消息传送

    有个需求,就是在windows上看见一篇介绍linux相关的文章,想在局域网内的另外一台linux电脑上尝试一下, 于是就需要把该网页链接发送给linux,不想一点一点敲链接,又苦于没有找到其它好的方 ...

  10. 谈谈对html5的了解

    1.良好的移动性,以移动端设备为主. 2.响应式设计,以适应自动变化的屏幕尺寸. 3.支持离线缓存技术,webStorage本地缓存. 4.新增canvas,video,audio等新.标签元素.新增 ...