之前的项目基本上都是用mongodb,以至于mysql相关的知识异常薄弱,这次连续一个半月的加班,总算是实际用到了mysql,也使自己对mysql了解的更多,对mybatis了解的更多,这里就说一说经过这一个项目,我对mybatis配置的进一步理解。

一般来说,一个比较完整的mybatis文件大概如下:

<!--第一部分-->
<?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" >
<!--第二部分-->
<mapper namespace="com.cmsz.om.dao.automaticInspection.HostCollectionDao">
<!--第三部分-->
    <resultMap id="hostCollection"
        type="com.cmsz.om.model.automaticInspection.HostCollectionModel">
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="pred_exec_time" property="predExecTime" jdbcType="TIMESTAMP" />
        <result column="exec_time" property="execTime" jdbcType="TIMESTAMP" />
        <result column="host_ip" property="hostIp" jdbcType="VARCHAR" />
        <result column="host_name" property="hostName" jdbcType="VARCHAR" />
        <result column="check_type" property="checkType"
            jdbcType="INTEGER" />
        <result column="excute_time" property="excuteTime"
            jdbcType="FLOAT" />
        <result column="latency" property="latency" jdbcType="FLOAT" />
        <result column="opr_result" property="oprResult" jdbcType="VARCHAR" />
        <result column="tranc_result" property="trancResult"
            jdbcType="VARCHAR" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
    </resultMap>
<!--第四部分-->
    <select id="findPer" parameterType="map" resultMap="hostCollection">
    SELECT t.HOST_IP,DATE_FORMAT(t.CREATE_TIME,"%Y-%m-%d %H:00:00") createTime,t.CHECK_TYPE,t.OPR_RESULT
         FROM om_test.host_collect_datas t
         WHERE
         <![CDATA[
         T.CREATE_TIME>=#{startTime} and T.CREATE_TIME<#{endTime}
        ]]>
         GROUP BY t.HOST_IP,t.check_type,DATE_FORMAT(t.CREATE_TIME,"%Y-%m-%d %H:00:00")
    </select>
</mapper>

上边我标注了一至四四个部分,正常情况来说,这基本的四部分是必不可少的,下边是我对这四部分的理解:

第一部分是mybatis配置文件必不可少的,也可以说是基本固定的,算是mybatis文件的头部声明,以便于spring扫描时能够知道这是个mybatis文件,从而正常的解析。

**第二部分**namespace,直接指向我们对应的dao接口的完整路径,包括包名和类名,这个就需要根据不同的dao接口进行适当的改变。

第四部分是我们操作数据库的sql语句,结合mybatis的一些标签使mybatis生成正确的sql语句,这一步分很重要,主要涉及到sql语句和编写和mysql标签的使用。

而我这里要着重说明的是第三部分,因为有比较长的一段时间我并不能真正的理解这个配置具体的含义,以至于实际运用中犯了若干个错误。

在这一部分中又可以分为几个比较小的部分,其中的id,相信了解spring的都应该明白是什么意思以及他的作用,就像我们这里第四部分resultMap=”hostCollection”就直接引用了这个id。

接下来的type,这里是直接指向的我们java代码中的实体类,和dao接口一样需要完整的路径,即完整包名和类名。

最重头的其实在下边,也就是我们可以看到的若干个重复的result,以及result里边的column和property以及jdbcType。

很早以前,我知道这里是数据库和实体类的对应,但是并不明白究竟是怎么个对应法,因此有一次我column配的是实体类的属性名,而property配的则是数据库中的字段名。由于当时的名字都起得一模一样,也就导致程序正常运行,我以为这样就是对的。

但是后来在一个新的mybatis配置中,我依然这样的配置,结果由于数据库字段名和实体类的属性名并不一样,就导致程序无法正常运行,最后我一番修改后,把column对应到了数据库中的字段名,把property对应到了实体类的属性名。

然后,因为sql不是太麻烦,不论是查询条件还是返回结构都没有额外的字段,所以这样之后运行程序也再次正常,于是我便以为这样便是对的。

知道最近,又一次的业务需求,使得返回值不仅仅包括数据库表中原有的字段,经过了一番挣扎后,我才终于发现,原来property确实是对应实体类的属性。

但是,column实际上对应的是mybatis中sql语句的返回值,而不是我之前所以为的数据库表中的实际字段。

至此,我觉得自己大概算是真正的理解了mybatis配置的具体含义,只是不知道是不是还有下一次遇到新的问题,然后再像之前一样,继续推翻这个理解。

项目总结2——mybatis配置的理解的更多相关文章

  1. Mybatis 复习 Mybatis 配置 Mybatis项目结构

    pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...

  2. Maven-SSM项目pom.xml配置以及springmvc配置以及mybatis配置及web.xml配置

    一.Maven本地仓库的pom.xml配置 (全部是mysql数据库) <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  3. SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现

    上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1.    外部架包依赖引入 外部依赖包引入 ...

  4. Mybatis配置信息浅析 MyBatis简介(二)

    官方文档入门篇中有明确说明 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的. SqlSessionFactory 的实例可以通过 SqlSessionF ...

  5. [SSH 3]以网上商城项目浅谈spring配置

    导读:在做ITOO项目的时候,就用到了容器+反射,从而运用了依赖注入和依赖查找.如果看过WCF端的配置文件,那么对于这个spring的配置就很容易理解.本篇博客,是对于自己做的一个小项目中所运用到的s ...

  6. Spring+Mybatis配置

    Spring+Mybatis配置 之前做项目的时候用到了spring+mybatis框架,一直想抽空整理一下 Mybatis: mybatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 ...

  7. 2 将mybatis配置到springmvc中

    为了更方便的连接数据库,将mybatis配置到springMVC中 1).  首先是jar包    多了3个jar  druid 这个是阿里的数据库连接包      mybatis和 mybatis- ...

  8. spring+myBatis 配置多数据源,切换数据源

    注:本文来源于  tianzhiwuqis <spring+myBatis 配置多数据源,切换数据源> 一个项目里一般情况下只会使用到一个数据库,但有的需求是要显示其他数据库的内容,像这样 ...

  9. mybatis配置与使用

    一:Mybatis简介 1.名称由来 Mybatis原名叫ibatis.Mybatis一开始属于Apache,2010年从Apache转移到了GoogleCode这个组织中. 2.Mybatis概念 ...

随机推荐

  1. 关于Kafka 的 consumer 消费者处理的一些见解

    前言 在上一篇 Kafka使用Java实现数据的生产和消费demo 中介绍如何简单的使用kafka进行数据传输.本篇则重点介绍kafka中的 consumer 消费者的讲解. 应用场景 在上一篇kaf ...

  2. 利用多进程获取猫眼电影top100

    猫眼电影top100 是数据是在加载网页时直接就已经加载了的,所以可以通过requests.get()方法去获取这个url的数据,能过对得到的数据进行分析从而获得top100的数据, 把获取的数据存入 ...

  3. 51Nod 欢乐手速场1 B 序列变换[容斥原理 莫比乌斯函数]

    序列变换 alpq654321 (命题人)   基准时间限制:1 秒 空间限制:131072 KB 分值: 40 lyk有两序列a和b. lyk想知道存在多少对x,y,满足以下两个条件. 1:gcd( ...

  4. transform复习之图片的旋转木马效果

    效果示意图 <!DOCTYPE><html><head><meta http-equiv="Content-Type" content=& ...

  5. 数据分析之pandas教程-----概念篇

    目录 1  pandas基本概念 1.1  pandas数据结构剖析 1.1.1  Series 1.1.2  DataFrame 1.1.3  索引 1.1.4  pandas基本操作 1.1.4. ...

  6. 运行所选代码生成器时出错:“预期具有协定名称 "NuGet.VisualStudio.IVsPackageInstallerServices" 的1导出 ——VS2015错误记录

    在编写ASP.NET MVC控制器后,右键添加视图时,VS2015报出错误: 运行所选代码生成器时出错:“预期具有协定名称 "NuGet.VisualStudio.IVsPackageIns ...

  7. 小甲鱼OD学习第8讲

    这次我们的任务是破解这个有日期限制的软件 我们可以看到,这个一个有日期限制的软件,如图所示 首先,我们把程序载入OD,我们从字符串搜索入手,选择  所有参考文本字串,如图 我们输入相应的字符串尝试搜索 ...

  8. 炸金花的JS实现从0开始之 -------现在什么都不会(1)

    新年结束了.回想起来唯一留下乐趣的就是在家和朋友玩玩炸金花. 遂有此文. 对不起,我这时候还没有思路. 让我捋一捋. ... ... 捋一捋啊... ... 好了.今天先这样吧: (1)先整理出所有的 ...

  9. 基于Docker构建带有Rsync的Jenkins

    1.编辑Dockerfile文件 FROM jenkins USER root ADD sources.list /etc/apt/sources.list RUN apt-get update &a ...

  10. appium滑动操作(向上、向下、向左、向右)

    appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...