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. python36

    无限循环 如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例: 实例 #!/usr/bin/python # -*- coding: UTF-8 -*- var = 1 while v ...

  2. django日志集成输出器

    在配置文件中 import os # ⽇志 LOGGING = { 'version': 1, # 自定义一个简单版本 'disable_existing_loggers': False, # 是否禁 ...

  3. fillder弱网测试

    打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多. 二.设置弱网参数:菜单Rules-> ...

  4. JavaScript的原型和原型链

    说到JavaScript的原型和原型链,相关文章已有不少,但是大都晦涩难懂.本文将换一个角度出发,先理解原型和原型链是什么,有什么作用,再去分析那些令人头疼的关系. 一.引用类型皆为对象 原型和原型链 ...

  5. 关于Java的惰性求值

    最近在学scala的时候,函数传参可以是传名参数,或者传值参数 1.Scala中的传名参数是什么意思?lazy关键字有什么作用? Scala官方文档的定义是:传名参数 仅在被使用时触发实际参数的求值运 ...

  6. 前后端分离--token过期策略方案1

    https://blog.csdn.net/weixin_38827340/article/details/86287496?utm_medium=distribute.pc_aggpage_sear ...

  7. .NetCore【中间件】API文档Swagger

    Swagger 为API接口生成文档 Core中添加Swagger nuget安装包 install-package Swashbuckle.AspNetCore 注册服务 public void C ...

  8. docker镜像原理(一)

    在理解什么是docker镜像之前我们需要搞懂虚拟机系统到底是怎么组成的如何实现的,docker中又是如何安装和使用虚拟机系统的,怎样可以高效灵活的切换系统发行版等问题 一.centos7系统长什么样 ...

  9. 【Python】容器:列表(list)/字典(dict)/元组(tuple)/集合(set)

    三.Python容器:列表(list)/字典(dict)/元组(tuple)/集合(set) 1.列表(list) 1.1 什么是列表 是一个'大容器',可以存储N多个元素简单来说就是其他语言中的数组 ...

  10. mariadb数据库查询(select)

    查询基本使用(条件,排序,聚合函数,分组,分页) 示例:--创建学生表 create table students ( id int unsigned not null auto_increment ...