mybatis的sql操作
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.转义字符
<: < 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操作的更多相关文章
- Springboot第五篇:结合myBatis进行SQL操作
前提:和之前同样的,本篇会从前端和后台一起讲述关于SQL的select操作(其他操作原理大致类似,不多做解释了). 大致流程:前端通过AJAX将数据发送到后台的路由,后台路由会根据发送的数据进行SQL ...
- Mybatis相关SQL操作总结
1.resultMap和resultType等参数以及结果集 <select id="getApplicationByRoleCode" resultType="p ...
- mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...
- MyBatis --- 动态SQL、缓存机制
有的时候需要根据要查询的参数动态的拼接SQL语句 常用标签: - if:字符判断 - choose[when...otherwise]:分支选择 - trim[where,set]:字符串截取,其中w ...
- 自己动手实现mybatis动态sql
发现要坚持写博客真的是一件很困难的事情,各种原因都会导致顾不上博客.本来打算写自己动手实现orm,看看时间,还是先实现一个动态sql,下次有时间再补上orm完整的实现吧. 用过mybatis的人,估计 ...
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- mybatis原理分析学习记录,mybatis动态sql学习记录
以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...
- mybatis 动态sql和参数
mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...
- MyBatis动态sql之${}和#{}区别
前言 接触mybatis也是在今年步入社会之后,想想也半年多了,缺没时间去系统的学习,只知道大概,也是惭愧. 不知道有多少刚毕业的同学和我一样,到现在还没仔仔细细去了解你每天都会见到使用到的框 ...
随机推荐
- Linux: Ensure X Window System is not installed
参考 2.2.2 Ensure X Window System is not installed X window System是什么 The X Window System provides a G ...
- uniapp 配置钉钉小程序package.json文件
{ "uni-app": { "scripts": { "mp-dingtalk": { "title": " ...
- python 文件 写入
import sys import os # 打印当前文件的路径 print(__file__) # 打印当前文件所在文件夹的路径 print(os.path.dirname(__file__)) # ...
- JS二进制:File、Blob、FileReader、ArrayBuffer、Base64
原文链接:https://mp.weixin.qq.com/s/IarZDzv9dLD5suL5zdZNcQ JavaScript 提供了一些 API 来处理文件或原始文件数据,例如:File.Blo ...
- laravel Auth的使用
最新的文档是使用的 laravel/jetstream 扩展包,旧版本中的 php artisan make:auth 命令在新版本中已不能用,但是此博客没有使用文档提供的扩展包,而是使用的是lara ...
- Cplex-opl解决网络路由选择和资源分配问题
安装Cplex 注意事项:全英文系统.安装路径.代码,会减少软件运行设置错误.(该软件对中文支持性不好) opl语言基础 [转载]CPLEX学习笔记二 – OPL的数据类型 - 知乎 (zhihu.c ...
- win10 python mysqlclient 安装问题 已解决
用习惯了Linux 忽然换到win10 超级不习惯 今天下午就一个mysqlclient 安装弄了好长时间 ,最后发现是得改名 真是想爆粗口. 下面直接进入正题: 下载地址 https:/ ...
- 5. icon创建
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...
- 在centons7系统部署一套单master的k8s集群
架构图: 操作系统:CentOS Linux release 7.7.1908 (Core) docker:docker-ce-20.10.14-3.el7.x86_64 kubernetes: 1. ...
- 递归分批次插入数据(An I/O error occurred while sending to the backend报错解决方案)
//递归插入public void add(List<Object> all, long start, long limit){ //截取 List<Object> colle ...