mapper.xml文件映射配置
一、导入约束
为全局配置文件绑定dtd约束:
1)联网会自动绑定
2)没网的时候【/org/apache/ibatis/builder/xml/mybatis-3-mapper.dtd】:解压mybatis 的jar包然后在eclipse中绑定
window——preperances——XML Catalog ——Add——设置key为http://mybatis.org/dtd/mybatis-3-mapper.dtd,绑定本地文件位置location:
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
二、mapper映射文件结构
- <mapper namespace="mapper.buyrecordMapper">
- <!--namespace 必须配置成接口的全限定名。Mybatis内部就是通过这讲接口和mapepr.xml关联起来的。接口中方法和mapper.xml 中的id对应。否则会报错-->
- resultMap (自定义映射结果集)
- sql标签
- <select id=""></select>查询标签
- <insert id=""></insert>插入标签
- <update id=""></update>更新标签
- <delete id=""></delete>删除标签
- </mapper>
三、resultMap (自定义映射结果集)
- <!--resultMap将数据库中的列(字段名)和entity中属性的名字建立映射关联,id 这个resultMap的唯一标识,type表示要映射的实体-->
- <resultMap type="Goods" id="Map">
- column:数据库字段,property:映射属性
- id列:主键列,result普通列
- <id column="id" property="id" />
- <result column="name" property="name" />
- <result column="flag" property="flag" />
- 多表查询:
- 一对一,多对一assonciation标签,用javatype映射
- 一对多,collection标签,用oftype映射
- <association property="GoodsType" javaType="GoodsType">
- <id column="id" property="id"/>
- <result column="tname" property="name"/>
- </association>
- <!--***********分割线**************-->
- <collection property="employees" ofType="employees">
- <result column="ename" property="name" />
- </collection>
- </resultMap>
四、sql标签
- <resultType="###"> <resultMap="###"> 二选一,没配置或配置错,执行程序必报错
- <select id="finduser" resultType="User">
- select * from account ;
- </select>
- <insert id="adduser" parameterType="user">
- insert into
- account(name,money) values(#{name},#{money})
- </insert>
- <update id="updateuser" parameterType="user">
- update account set
- name=#{name},money=#{money} where id=#{id}
- </update>
- <delete id="deluser" parameterType="int">
- delete from account where
- id=#{id}
- </delete>
五、动态sql
< where >和< if >标签
< where > : 主要用来替换sql语句中的where字段,他的作用主要是用来简化sql语句中where条件判断的书写的
< if >:条件判断标签,配置属性test=" 条件字符串 ",判断是否满足条件,满足则执行,不满足则跳过
- <select id="deptif" resultType="dept" parameterType="dept">
- select * from dept
- <where>
- <if test="dname!=null and dname.trim()!=''">
- and dname like concat('%',#{dname},'%')
- </if>
- <if test="loc!=null and loc.trim()!=''">
- and loc=#{loc}
- </if>
- </where>
- </select>
< set >标签
< set > : 主要用来替换sql语句中的set字段,一般在update中使用。
- <update id="update" parameterType="Dept">
- update dept
- <set>
- <if test="dname!=null">
- dname=#{dname},
- </if>
- <if test="loc!=null">
- loc=#{loc}
- </if>
- </set>
- where id=#{id}
- </update>
< trim>标签
< trim > : 是一个格式化的标记,可以完成set或者是where标记的功能
prefix:前缀
prefixoverride:去掉第一个and或者是or
- <select id="depttrim" resultType="Dept" parameterType="Dept">
- select * from dept
- <trim prefix="where" suffixOverrides="and">
- <if test="dname!=null and dname.trim()!=''">
- dname like concat('%',#{dname},'%') and
- </if>
- <if test="loc!=null and loc.trim()!=''">
- loc=#{loc}
- </if>
- </trim>
- </select>
< choose >标签
< where > : choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。
当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。
类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
- <select id="deptchoose" resultType="Dept" parameterType="Dept">
- select * from dept
- <where>
- <choose>
- <when test="loc!=null">
- loc=#{loc}
- </when>
- <when test="dname!=null and dname.trim()!=''">
- dname like concat('%',#{dname},'%')
- </when>
- <otherwise>
- id=#{id}
- </otherwise>
- </choose>
- </where>
- </select>
<foreach>标签
foreach标签经常用于遍历集合,构建in条件语句或者批量操作语句。
- <select id="deptforeach" resultType="Dept">
- select * from dept
- <where>
- <if test="list!=null and list.size()>0">
- <foreach collection="list" separator="," open="id in("
- close=")" item="uid">
- #{uid}
- </foreach>
- </if>
- </where>
- </select>
- <insert id="addProperties" parameterType="java.util.List">
- INSERT INTO tdt_sync_instance_properties (name,instance_id) VALUES
- <foreach collection="list" item="prop" separator=",">
- (#{prop.name},#{prop.instance_id})
- </foreach>
- ;
- </insert>
mapper.xml文件映射配置的更多相关文章
- MyBatis的mapper.xml文件的参数问题:org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map
配置参数类型有两种选择,即:parameterType和parameterMap 不管参数是否是基本数据类型还是map类型,都是使用parameterType. 版权声明:本文为博主原创文章,未经博主 ...
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
- mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?
mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...
- Java数据持久层框架 MyBatis之API学习六(Mapper XML 文件详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- Java数据持久层框架 MyBatis之API学习五(Mapper XML 文件)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- 【MyBatis】Mapper XML 文件
Mapper XML文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立 ...
- MyBatis——Mapper XML 文件
Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...
- Mybatis学习笔记(五) —— Mapper.xml(输入映射和输出映射)
一.parameterType(输入类型) 1.1 传递简单类型 <!-- 根据用户id查询用户 --> <select id="queryUserById" p ...
- 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件
原 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件 原文章链接:https://blog.csdn.net/beauxie/article/de ...
随机推荐
- Cypress系列(2)- Cypress 框架的详细介绍
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Cypress 简介 基于 JavaSc ...
- nginx: [error] invalid PID number "" in ...
1.查看进程 ps -ef|grep nginx 2.进入nginx安装目录sbin下,执行命令: ./nginx -t 如下显示: syntax is ok test is successful 3 ...
- TensorFlow的checkpoint文件转换为pb文件
由于项目需要,需要将TensorFlow保存的模型从ckpt文件转换为pb文件. import os from tensorflow.python import pywrap_tensorflow f ...
- C# 基础之参数修饰符
参数传参的时候一共有四种传递方式: 一.无修饰符传参 也就是说没有传参修饰符,这种情况传过去的是一个副本,本体是不会被改变的 二.out传参修饰符 在传参的参数全面加一个out: public voi ...
- 一文彻底搞懂BERT
一.什么是BERT? 没错下图中的小黄人就是文本的主角Bert ,而红色的小红人你应该也听过,他就是ELMo.2018年发布的BERT 是一个 NLP 任务的里程碑式模型,它的发布势必会带来一个 NL ...
- MySql轻松入门系列————第一站 从源码角度轻松认识mysql整体框架图
一:背景 1. 讲故事 最近看各大技术社区,不管是知乎,掘金,博客园,csdn基本上看不到有小伙伴分享sqlserver类的文章,看样子这些年sqlserver没落了,已经后继无人了,再写sqlser ...
- Java-语言基础梳理
1.java命名规范 包名:全小写 类名,接口名:首字母大写 变量名,方法名:第一个单词皆字母小写,后面单词首字母大写 常量名:所有字母都大写 2.变量 2.1 注意事项 作用域:一对{}之间有用 必 ...
- markdown的简易使用方法
markdown 的使用方法 标题的使用: 以#号开头,后面跟上空格键. 一级标题用一个#号, 二级标题用两个##.以此类推,总共六级. 段落的编写 至少使用一个空行来分割段落 :即按两次enter键 ...
- Redis 的原理与应用场景及数据库关系
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一. Redis 是什么? Redis是一个开源的使用ANSIC语言编写.支持网络.单进程单线程.可基于 ...
- Java实现 蓝桥杯 算法提高 01背包
算法提高 01背包 时间限制:1.0s 内存限制:256.0MB 问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入 ...