1.Mapper接口创建

  创建Mapper包,所有的Mapper接口放在该包下。Mapper接口中声明将要实现的方法,在接下来的Mapper.xml文件中实现对应方法。

2.Mapper.xml创建

  (1)在resources下创建与Mapper接口路径相同的包。如Mapper接口路径为“com.example.demo.Mapper”,则xml文件包路径因与之相同“com.example.demo.Mapper”,位置相同mybatis才能识别。

  (2)xml文件首先声明实现哪个接口,如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespqce:对应Mapper接口文件位置-->
<mapper namespace="com.mybatis.Mapper.UserMapper"> </mapper>

  (3)实现相应接口,进行sql操作。id:接口方法名;resultType:返回类型,可不写;useGeneratedKeys:true或false,是否返回主键;keyProperty:返回主键对应表列名,如id。

   <!--1.属性名和实体字段不同时可以用过取别名的方式手动映射-->
<!--2.sql片段-->
<!--
<sql id="selectall">
id as use_id ......
</sql>
-->
<!--3.resultmap映射
column:表字段名
property:实体属性名
<resultMap id="userResultMap" type="user">
<result column="id" property="user_id"></result>
</resultMap>
--> <!--
#:替换为?进行匹配,防止sql注入 $:拼接sql,存在sql注入
表名列名动态设定只能使用$
--> <!--
1.转义字符
<: &lt 2.CDATA区
<![CDATA[ ]]>
-->
<!--<select id="selectall" resultType="User">-->
<!--select * from user-->
<!--</select>--> <select id="selectById" resultType="User" parameterType="int">
select * from user where id
<![CDATA[
<
]]>
#{id}
</select> <!--多条件查询-->
<!--<select id="selectByCondition" resultType="User">-->
<!--select * from user-->
<!--where name like #{name}-->
<!--or number like #{number}-->
<!--</select>--> <!--动态条件查询-->
<select id="selectByCondition" resultType="User">
select * from user
<where>
<if test="name != null and name != ''">
name like #{name}
</if>
<if test="number != null and number != ''">
and number like #{number}
</if>
</where>
</select> <select id="selectByConditionByObject" resultType="User">
select * from user
<where>
<choose>
<when test="name !=null and name != ''">
name = #{name}
</when>
<when test="number !=null and number != ''">
number = #{number}
</when>
</choose>
</where>
</select> <!--useGeneratedKeys="true" keyProperty="id":主键返回-->
<insert id="add" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user(id,name,password,number)
values (#{id},#{name},#{password},#{number})
</insert> <!--update可以使用<set></set>标签与where标签类似--> <delete id="deleteById">
delete from user where id = #{id}
</delete> <!--批量删除
mybatis会将传入的数组封装为Map集合
默认key的名称为array,使用@param可以改变默认名称
separator:分隔符
open:添加前缀
close:添加后缀
-->
<delete id="deleteByIds">
delete from user where id
in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>

mybatis的sql操作的更多相关文章

  1. Springboot第五篇:结合myBatis进行SQL操作

    前提:和之前同样的,本篇会从前端和后台一起讲述关于SQL的select操作(其他操作原理大致类似,不多做解释了). 大致流程:前端通过AJAX将数据发送到后台的路由,后台路由会根据发送的数据进行SQL ...

  2. Mybatis相关SQL操作总结

    1.resultMap和resultType等参数以及结果集 <select id="getApplicationByRoleCode" resultType="p ...

  3. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  4. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法   动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...

  5. MyBatis --- 动态SQL、缓存机制

    有的时候需要根据要查询的参数动态的拼接SQL语句 常用标签: - if:字符判断 - choose[when...otherwise]:分支选择 - trim[where,set]:字符串截取,其中w ...

  6. 自己动手实现mybatis动态sql

    发现要坚持写博客真的是一件很困难的事情,各种原因都会导致顾不上博客.本来打算写自己动手实现orm,看看时间,还是先实现一个动态sql,下次有时间再补上orm完整的实现吧. 用过mybatis的人,估计 ...

  7. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

  8. mybatis原理分析学习记录,mybatis动态sql学习记录

    以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...

  9. mybatis 动态sql和参数

    mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...

  10. MyBatis动态sql之${}和#{}区别

    前言 ​ 接触mybatis也是在今年步入社会之后,想想也半年多了,缺没时间去系统的学习,只知道大概,也是惭愧. ​ 不知道有多少刚毕业的同学和我一样,到现在还没仔仔细细去了解你每天都会见到使用到的框 ...

随机推荐

  1. APP与Web测试区别

    相同点: WEB 测试和 App 测试从流程上来说,没有区别.都需要经历测试计划方 案,用例设计,测试执行,缺陷管理,测试报告等相关活动.从技术上来说, WEB 测试和 APP 测试其测试类型也基本相 ...

  2. win10 右键文件夹卡死

    遇到右键文件夹卡死的问题,网上查找尝试, 命令窗口输入如下命令: SFC/Scannow 还有个思路 ,360安全 软件大全下载一个右键管理软件删除多余无用的右键选项: 参考:https://answ ...

  3. Vulnhub 靶场 HMS?: 1

    Vulnhub 靶场 HMS?: 1 前期准备: 靶机地址:https://www.vulnhub.com/entry/hms-1,728/ 攻击机ip:192.168.147.190 靶机ip:19 ...

  4. 使用emplace_back的new initializer expression list treated as compound expression提示看聚合初始化和parameter pack

    测试代码 使用emplace_back可以避免不必要的构造和拷贝,而是直接在向量的内存位置执行construct进行构造,代码看起来也更加简洁. 但是在使用的时候,会发现有一些和直观不太对应的情况.例 ...

  5. windows 服务 包装模板

    github地址:  https://github.com/xl711436/Xiaolei.MockService 在 MockServiceInstance.cs 中 对应的方法中添加 对应的逻辑 ...

  6. JavaScript 基础学习(三)

    BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相关的动作. 使 JavaScript 有能力与浏 ...

  7. css代码中的2个类名连一起写是啥意思?

    <div class="menu-btn closed"> <div class="menu-line"></div> &l ...

  8. MogDB 学习笔记之 -- truncate 属于dml语句

    # 概念描述验证create 语句.alter 语句.truncate语句.drop语句 是属于ddl 还是dml # 测试验证 1.环境准备 ```修改log_statement 参数miao=# ...

  9. MogDB 学习笔记之 --exchange partition

    # 概念描述MogDB 提供了从分区交换的功能,如单表转化到一个分区中基本语法:ALTER TABLE...EXCHANGE PARTITION数据库版本# 测试验证## 1.环境准备``` miao ...

  10. Truenas Core安装(DOS界面)

    下载ISO安装包 搜索truenas core ,找到网站www.truenascore.com,根据网站导航栏指示,点击menu--software--truenas core--download ...