Mybatis以及数据库相关知识小记

原创 2018年04月17日 13:57:35

4.2来公司实习,到今天也有半个月了,先培训公司文化培训了一个周,实际工作也就一个周,作为实习生主要还是学习知识,下面就只记录一些学习的知识。

Mybatis可以简化java与数据库的链接流程,在书写Mapper映射时需要学习一下书写规则。本次所做的工作主要是编写一个查询数据库获取数据并封装为一个调用的接口,公司目前使用的是springboot框架,我的任务是编写一个Service层接口,给上层调用。

先上代码,由于是公司代码,我会做一些改变。

<select id="queryANW" parameterType="com.a.b.c.d.e.SD" resultType="com.a.b.c.d.e.SDD">
        SELECT
        a.oii,a.oin,
        a.bi,a.bn,
        b.gd,b.gn,
        IFNULL(SUM(b.ugd),0) AS wiq
        FROM SO a,SOD b
        <where>
            a.oii=#{db}
            AND a.bn=b.bn
            AND (a.`status`=404 OR a.`status`=403)
            AND a.df=0
            AND b.df=0
            AND (DATE_SUB(CURDATE(), INTERVAL 30 DAY) &lt;= a.bdate)
            <if test="sDD!=null">
                AND dd IN
                <foreach collection="sDD" index="index" item="item" open="(" separator="," close=")">
                    #{item.gd}
                </foreach>
            </if>
        </where>
        GROUP BY a.oii,b.gd
    </select>

好了,现在开始说说自己学了什么。

<select id="queryANW" parameterType="com.a.b.c.d.e.SD" resultType="com.a.b.c.d.e.SDD">

parameterType 为指定输入类型,一般需要具体指定到一个实体类,resultType为输出类型,也需要指定到一个实体类。

IFNULL(SUM(b.ugd),0) AS wiq

SUM()这个函数可能会返回NULL,需要注意处理,MySQL自带IFNULL()函数,当sum返回null时,更改为一个指定的值。

a.oii=#{db}

#{}在Mybatis大概相当于一个占位符吧,db就是之前传入的参数中的属性。

AND (DATE_SUB(CURDATE(), INTERVAL 30 DAY) &lt;= a.bdate)

DATE_SUB()函数返回的是一个日期,即第一个传入参数的日期减去第二个参数所指定的时间,返回的是计算出减去时间后的日期。

CURDATE()是获取当前日期,INTERVAL 30 DAY是指代30天的意思。整个函数意思就是计算出当前日期往前30天的意思,即符合要求时间限制的最小日期。

a.bdate为 一个日期字段,当这个日期大于前面所计算出的最小时间日期时,便可以判定单据日期在30天以内,可以被选择出来。

在Mybatis中使用“&lt;=”来替代“<=”这个符号。

<foreach collection="sDD" index="index" item="item" open="(" separator="," close=")">
                    #{item.gd}
                </foreach>

以下的说明摘自:https://blog.csdn.net/qinyf2015/article/details/78688877

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。

foreach元素的属性主要有 item,index,collection,open,separator,close。
item集合中每一个元素进行迭代时的别名,
index表示在迭代过程中,每次迭代到的位置,
open该语句以什么开始,
separator在每次进行迭代之间以什么符号作为分隔 符,
close以什么结束,
在使用foreach的时候最关键的也是最容易出错的就是collection属性,
该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,
主要有一下3种情况:
1.     如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2.     如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

3.     如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了

GROUP BY a.oii,b.gd
Group By 语句可以对选出的数据进行条件分组,但是同时其又具有排序功能,若选择分组的字段全部是字符类型的,它会按照首字符ASCLL码的大小进行由小到大的排序。

【PHP基础知识】——数据库MySQL操作(上)

前言:MySQL数据库是基于Linux操作系统的开发出来的数据库,因为Linux是开源代码,MySQL也是免费开源码的数据库。其支持多种语言连接,能满足中小型企业对数据库的需求,使得其能在数据库界占有...
  • dream_successor
  • dream_successor
  • 2017-09-26 16:55:53
  • 130

数据库基本操作和知识

数据库基本语法和概要
  • qq_29340989
  • qq_29340989
  • 2017-09-20 14:59:14
  • 119

数据库相关的知识数据库相关的知识

  • 2010年05月30日 12:50
  • 1.83MB
  • 下载

数据库相关知识以及经验总结

已停更,转移至有道云笔记 Mysql 优化之explain你的select ,show profile, 慢查询  explain select * from answer where q...
  • qq_25931839
  • qq_25931839
  • 2018-01-11 21:28:05
  • 56

韩顺平 java课件

  • 2012年09月22日 20:46
  • 11.99MB
  • 下载

Mybatis知识点回顾/总结

一:mybatis基本工作流程                          1.sqlMapConfig.xml:mybatis全局配置文件,配置了数据源,事务等mybatis的运行环境,...
  • Lee_Ho_
  • Lee_Ho_
  • 2017-06-15 15:47:49
  • 747

java面试小结——数据库

MySql与Oracle的几个主要区别 一、并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 · mysql: mysql以表级锁为主,对资...
  • DuMeiLin1
  • DuMeiLin1
  • 2018-03-01 15:20:59
  • 103

面试笔试---数据库重点知识

(网上搜集) 1.数据库事务   事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从...
  • hyqwmxsh
  • hyqwmxsh
  • 2016-10-14 09:38:35
  • 1211

NoSQL数据库PPT

  • 2017年03月07日 15:38
  • 522KB
  • 下载

数据库基本知识点总结

数据库也是计算机类笔试面试中不可避免会遇到的考点,尤其是银行和部分传统软件类公司。这里根据整理的资料,对数据库的相关知识也做个总结吧。希望学过数据库但长时间不用的同学根据这些知识能够回忆和重拾,没学过...
  • liuxyen
  • liuxyen
  • 2017-11-21 13:43:48
  • 2082
收藏助手
不良信息举报
您举报文章:Mybatis以及数据库相关知识小记
举报原因:
原因补充:

(最多只允许输入30个字)