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也是在今年步入社会之后,想想也半年多了,缺没时间去系统的学习,只知道大概,也是惭愧. 不知道有多少刚毕业的同学和我一样,到现在还没仔仔细细去了解你每天都会见到使用到的框 ...
随机推荐
- CAD轴测图怎么画?快来试试浩辰CAD超级轴测命令!
很多新手设计师小伙伴,不知道CAD轴测图怎么画?其实很简单,浩辰CAD中的超级轴测功能,可以方便地将CAD平面图转化为轴侧图,是绘制管线系统图的好帮手.今天就和小编一起来看看在浩辰CAD软件中通过调用 ...
- 混淆css类名
使用vite:
- 关闭 Microsoft Compatibility Telemetry
Microsoft Compatibility Telemetry可能会导致操作系统(Win10)启动后一直读盘,打开任务管理器可能会看到 Microsoft Compatibility Teleme ...
- ComPiler200003:Story-Oriented Programming
Story-Oriented Programming MAY 25TH, 2018 http://www.brandonkeown.com/2018/05/story-oriented-program ...
- PyMySQL创建
title: PyMySQL创建 author: 杨晓东 permalink: PyMySQL创建 date: 2021-10-02 11:27:04 categories: - 投篮 tags: - ...
- 大二下学期开学java测试
我们在2月13日下午进行了java测试(是一个新闻类型的题),通过这一个测试我进行了以下总结: 我对于javaweb的框架构建和加密密码,还有一些不同人物功能的实现,使得我在这次得考试中成绩不太理想. ...
- 5. icon创建
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...
- 项目_1.3_手写SpringMVC框架
初步修改项目 package com.hy.servlet; import java.io.IOException; import java.lang.reflect.InvocationTarget ...
- while跟if循环
While(表达式)//循环,达成括号里的条件,一直循环执行里面的程序直到得出的值不成立后退出循环 { 循环体} 几个练习题: using System; namespace while练习2 { c ...
- 如何设置 iOS 开发环境
原文:https://lwebapp.com/zh/post/how-to-set-up-the-ios-development-environment 介绍 移动互联网时代,掌握 iOS 开发和安卓 ...