MyBatis SQL语句操作Mysql
本文记录使用Mybatis操作数据库时碰到的一些语句,供以后参考。
一,多条件查询
示意SQL语句:SELECT t_field1, t_field2 FROM table_name WHERE t_field3 (BETWEEN startTime AND endTime) AND t_field4 IN (xxx,xxx,xxx)
Mapper接口配置:
public List<Chat> query(@Param("startTime") long startTime, @Param("endTime") long endTime, @Param("sids") List<Long> sidList);
Mapper.xml配置:
<select id="query" resultMap="chat">
SELECT uid,content from tableName
WHERE
( UNIX_TIMESTAMP(data_time) >= #{startTime} ) AND ( UNIX_TIMESTAMP(data_time) <= #{endTime} )
AND sid IN
<foreach collection="sids" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>
resultMap 将数据库中的列名 与 JavaBean 属性名 对应,从而映射成Java对象。Chat则是一个拥有两个字段(uid 和 content)的 JavaBean类。
<resultMap id="chat" type="Chat"><!-- Chat 是在mybatisConfig.xml中定义的别名(全限定包名在 mybatisConfig.xml中配置了)-->
<id property="id" column="id"/>
<result property="uid" column="uid"/>
<result property="content" column="content"/>
</resultMap>
解释:①Mapper接口中的方法名 与 Mapper.xml中的 <select id 一 一对应。
②Mapper接口 通过 @Param 实现多个参数传递。可参考:MyBatis简单使用和入门理解 中的“使用参数注解的形式传递多个参数”。@Param中指定的参数名称 与 select 查询语句中的 名称 一 一对应。比如:@param("startTime") 对应 #{startTime} 。 @param("endTime") 对应 #{endTime} 。
@param("sids") 对应 foreach collection="sids"
③通过 foreach 语句,对 sid 字段 实现了 多条件匹配。相当于 sid IN {xxx1,xxx2,xxx3....}
④另外对于数据库中的String类型 data_time字段,首先转化成UNIX时间戳,然后与 startTime 及 endTime 比较。注意的是 <= 是用 < 来表示的。否则会报下面错误:
tag name are expected
MyBatis SQL语句操作Mysql的更多相关文章
- Shell脚本中执行sql语句操作mysql的5种方法【转】
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- 【MySQL】使用SQL语句操作MySQL
前言: MySQL在工作中是最常用的数据库,但在使用Django和Flask的时候,都是使用ORM进行操作,除了select语句外,其他的SQL语句操作MySQL的能力没有啥提高,为了解决这个问题, ...
- Shell脚本中执行sql语句操作mysql
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- SHELL脚本中执行SQL语句操作MYSQL的5种方法
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- Django中使用mysql数据库并使用原生sql语句操作
Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...
- 在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作
在myeclipse中配置DB Driver(数据库用MySql),并在myeclipse执行sql语句操作 MyEclipse6.5 , mysq驱动jar包为mysql-connector ...
- 一条SQL语句在MySQL中如何执行的
本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...
- SQL语句操作全集
SQL语句操作全集 下列语句部分是MySQL语句 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDAT ...
- 一条SQL语句在MySQL中是如何执行的
概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架构分析 mysql主要分为Server层和存储 ...
随机推荐
- luogu5022 [NOIp2018]旅行 (dfs)
m=n-1的时候,就直接贪心地dfs就可以 m=n的话,就可以枚举删掉一条边,然后照着m=n-1做 $O(n^2)$大概能过 (然而我眼瞎看不到m<=n) #include<cstdio& ...
- luogu5019 [NOIp2018]铺设道路 (贪心)
和NOIp2013 积木大赛一模一样 我在堆一格的时候,我把它尽量地往右去延伸 于是如果对于一个i,a[i-1]<a[i],那i在之前一定只堆过a[i-1]那么多,所以要再堆a[i]-a[i-1 ...
- [POI2012]STU-Well(二分答案+神仙操作)
给定一个非负整数序列A,每次操作可以选择一个数然后减掉1,要求进行不超过m次操作使得存在一个Ak=0且max{|Ai−Ai+1|}最小,输出这个最小lk以及最小值. Solution 最大值最小,显然 ...
- poj 3279 Fliptile(二进制搜索)
Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He ha ...
- 安装Ubuntu Server18.04(附与CentOS占用体积和Python版本的对比)
这边只演示一下最新系统的安装过程,设置之类的和以前讲的Kali以及CentOS大同小异:https://www.cnblogs.com/dunitian/p/4822808.html#linux 和C ...
- 使用python简单连接并操作数据库
python中连接并操作数据库 图示操作流程 一.使用的完整流程 # 1. 导入模块 from pymysql import connect # 2. 创建和数据库服务器的连接,自行设置 服务器地址, ...
- dom4j解析xml时取消DTD验证
解决方式整合一下,就分两种: 1.用setFeature() SAXReader reader = new SAXReader();reader.setValidation(false); reade ...
- JS时间戳转换成时间格式
TimeNow: function (val) { var date = new Date(val); var Y = date.getFullYear(); var m = date.getMont ...
- CMakeLists.txt使用
背景:C++代码在编译的过程中需要进行文件的包含,该文主要介绍CMakeLists.txt相关语法 CMake之CMakeLists.txt编写入门
- python简单购物车改进版
# -*- coding: utf-8 -*- """ ┏┓ ┏┓ ┏┛┻━━━┛┻┓ ┃ ☃ ┃ ┃ ┳┛ ┗┳ ┃ ┃ ┻ ┃ ┗━┓ ┏━┛ ┃ ┗━━━┓ ┃ 神 ...