1.mybatis的like查询的方式.

<if test="shopName != null and shopName != ''">
<bind name="shopName01" value="'%'+shopName+'%'" />
AND s.shop_name LIKE #{shopName01}
</if>

2.mybatis的批量插入,批量修改,批量删除

<insert id="insertBatch">
INSERT INTO t_user (id, name, del_flag) VALUES <foreach collection ="list" item="user" separator =",">
(#{user.id}, #{user.name}, #{user.delFlag}) </foreach >
</insert>

特别注意:mysql默认接受sql的大小是1048576(1M).

<deleteid="deleteBatch">
delete from table_name where id in
<foreach collection ="list" item="item" separator =",">
#{item}
</foreach >
</delete>

3.父子表,查询都查出来.

  

.主表添加子表属性
.主表xml查询left join子表
.xml查询返回的主表resultmap配置collection配置子表

子表配置主表association属性,关联查询一下即可.

3.获取主键

keyProperty="id" useGeneratedKeys="true"

4.连接mysql数据库注意编码问题

jdbc:mysql://127.0.0.1:3306/lanhuprivi?useUnicode=true&characterEncoding=UTF-8

5.传递的参数不多的话,可以不用类,用@Param注解

List<SysRole> selectRo lesByUseridAndRoleEnabled(
@Pa ram (”user Id”) Long user Id,
@Pa ram (” enable d ”) Integer enabled) ;

6.动态拼接sql的常用标签:if, choose(类似sql里的 case when/就是java里的if else)  where(标签的作用:如果该标签包含的元素中有返回值,就插入 where ;如果 where
后面 字符串是以 AND和OR 开头的,就将它们剔除。) ,set, trim, foreach, bind(bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中。)

trim的属性
prefix :当 trim 元素内包含内容时,会给内容增加 prefix 指定的前缀。
prefixOverrides :当 trim 元素内包含内容时,会把内容中匹配的前缀字符串去掉。
suffix :当 trim 元素内包含内容时,会给内容增加 suffix 指定的后缀。
suffixOverrides :当 trim 元素内包含内容时,会把内容中匹配的后缀字符串去
</if>
<if test=” userEmail != null and userEmail !=”” >
and user email = #{userEmail}
〈/工 f>
<choose>
<when test=” id != nul l ” >
and id= #{id}
</when>
<when test=” u serName != null and userName !=””>
and user name = #{userName}
</when>
<otherwise>
and =
</otherwise>
</ choose>
<where>
<if test=”userName != null and userName !=””>
and user name like concat .....
</ if>
<if test=” userEmail != ” and userEmail != nul l ”>
and user email = #{userEmail}
</ if>
</where>
foreach
collection 必填,值为要选代循环的属性名。这个属性值的情况有很多。
item :变量名,值为从法代对象中取出的每一个值。
index :索引的属性名,在集合数组情况下值为当前索引值 当选代循环的对象是 Map
类型时,这个值为 Map key (键值)。
ope 口:整个循环内容开头的字符串
close 整个循环内容结尾的字符串。
separator :每次循环的分隔符
<foreach collection=” lis t ” i tern=” user” separator=”,”>

#{user.userName}, #{user . userPassword},#{user . userEmail} ,
#{user.userlnfo} , #{user.headlmg, jdbcType=BLOB} ,
#{user.createTime , jdbcType=TIMESTAMP})
</foreach>
<if test="shopName != null and shopName != ''">
<bind name="shopName01" value="'%'+shopName+'%'" />
AND s.shop_name LIKE #{shopName01}
</if>

7.多数据库的支持, databaseld ,就是语句也写多个.

<select id=” selectByUser” database Id=” mysql ”
result Type=” tk .mybatis . simple.model.SysUser” >
select* from sys_userand
</select>
<se lect id=” selectByUser” database Id=” oracle ”
result Type=” t k.mybatis. simple.model.SysUser” >
select * from sys userand
</select>

8.mybatis的ognl表达式

MyBatis常用OGNL表达式

    e1 or e2
e1 and e2
e1 == e2,e1 eq e2
e1 != e2,e1 neq e2
e1 lt e2:小于
e1 lte e2:小于等于,其他gt(大于),gte(大于等于)
e1 in e2
e1 not in e2
e1 + e2,e1 * e2,e1/e2,e1 - e2,e1%e2
!e,not e:非,求反
e.method(args)调用对象方法
e.property对象属性值
e1[ e2 ]按索引取值,List,数组和Map
@class@method(args)调用类的静态方法
@class@field调用类的静态字段值

9.mybatis的select里面有注释,也会解析,报错.(工作中发现的错误)

10.org.apache.ibatis.reflection.ReflectionException

传入的值,没有get,set,接口上加上这个注解@Param

11.org.mybatis.spring.MyBatisSystemException

传入多个值,没有get,set,接口上加上这个注解@Param

(办公)mybatis工作中常见的问题(不定时更新)的更多相关文章

  1. ASP.NET中设置一个定时器来定时更新 转

    asp.net 定时器 比较少用,  中国红木网这是一个相当实用的功能,有了RSS博客镜像,就不需要在多处同时发布博客日志了.比如你同时在新浪上有自己的博客,又同时有自己的个人博客站点,那么你只需要在 ...

  2. 总结工作中常见的linux命令

    本文是总结下自己在工作中遇到的常见linux 命令,会持续更新! 1.文件路径切换 进入 cd 返回上一级  cd .. 2.复制 cp 源文件名 目标文件夹 cp log.log test5 3.编 ...

  3. css布局 - 工作中常见的两栏布局案例及分析

    突然想到要整理这么一篇平时工作中相当常见但是我们又很忽视的布局的多种处理方法.临时就在我经常浏览的网站上抓的相对应的截图.(以后看到其他类型的我再补充) 既然截了图,咱们就直接看人家使用的布局方式,毕 ...

  4. 随机记录工作中常见的sql用法错误(一)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...

  5. 工作中常见的五种技术leader

    力不从心型 在工作中有种技术leader,总认为自己是最好的.在方案设计的时候,自己有一种方案,下属有一种方案.leader非要别人听他的.如果两种方案没有优劣之分,比较建议的做法是让真正实施的人按照 ...

  6. js--前端开发工作中常见的时间处理问题

    前言 在前端开发工作中,服务端返回的时间数据或者你传递给服务端的时间参数经常会遇到时间格式转换及处理问题.这里分享一些我收集到的一些处理方法,方便日后工作中快速找到.先附上必须了解的知识内置对象传送门 ...

  7. 工作中常见的hive语句总结

    hive的启动: 1.启动hadoop2.开启 metastore 在开启 hiveserver2服务nohup hive --service metastore >> log.out 2 ...

  8. 日常工作中常见的mysql优化技巧

    1.介绍一下MYSQL经常使用的优化技巧. MySQL 自带 slow log 的分析工具 mysqldumpslow ,可是没有说明.本文通过分析该脚本,介绍了其用法. slow log 是 MyS ...

  9. 工作中常见的Git本地分支与远程分支同步场景

    Git 是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.   一直以来本人使用 Git 处理分支都是现用现查,一是因为怕出错,二还是因为懒,作为一名四年开发经验的前端 ...

随机推荐

  1. 解放程序员双手之Supervisor

      前言 对于大部分程序员来说,主要工作都是进行编码以及一些简单的中间件安装,这就导致了很多人对于“运维”相关的工作会比较生疏.例如当我们拥有一台自己的服务器以后,可能会在上面跑一跑自己blog程序, ...

  2. DSAPI 网页获取本地程序登陆用户

    这是一个非常简单的示例,在网页或其他平台获取程序中已经登陆的用户,当然也可以是其他信息. 源码 Imports DSAPI.网络.HTTP监听_DSWebAPI Public Class Form1 ...

  3. 软件工程通用软件体系结构主机终端模式、B/S 、C/S 结构和多层分布式结构

    软件系统的体系结构经历了主机终端模式.客户机/服务器(C/S)模式.浏览器/服务器(B/S)和多层分布式结构. 主机/终端结构: 早期计算机系统多是单机系统,多个用户是通过联网终端来访问的,没有网络的 ...

  4. git相关的操作

    给大家分享下git的使用心得,有不足的请大家补充: 克隆:git clone https://XXXXX 克隆指定分支:git clone -b https://XXXX 添加所有:git add . ...

  5. ansible基础-安装与配置

    一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...

  6. mysql安装问题(一)

    mysql安装问题 mysql安装一直未响应 问题: 原因: 解决方案: 登录mysql时提示密码错误 问题: 解决方案: mysql安装问题 Author:母虎忠 日期:April 26, 2019 ...

  7. spring设计模式_代理模式

    代理模式应该是Spring核心设计模式之一了 先说下代理模式特性: 1.有代理人和被代理人 2.对于被代理的人来说,这件事情是一定要做的,但是我又不想做,所有就找代理人来做. 3.需要获取到被代理人的 ...

  8. 【机器学习】--EM算法从初识到应用

    一.前述 Em算法是解决数学公式的一个算法,是一种无监督的学习. EM算法是一种解决存在隐含变量优化问题的有效方法.EM算法是期望极大(Expectation Maximization)算法的简称,E ...

  9. Openresty编写Lua代码一例

    1.前段时间纠结了很久,一直弄不清lua和tomcat的联系.一直认为是lua调用tomcat的接口才可使用,后面才明白过来,进入了一个误区,lua本身就是一门独立的脚本语言.在openresty里面 ...

  10. Spring之旅第六篇-事务管理

    一.什么是事务 什么是事务(Transaction)?事务是数据库中的概念,是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 有个非常经典的转账问题:A向B转款1000元,A转出成 ...