之前的项目基本上都是用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. windows程序设计获取文本框(窗口、对话框)文本

    就是这样一个简单的界面,窗口上重绘的对话框(这种写法参考我之前博文): 需要做到的就是点击确定,获取文本框中内容. // 处理对话框消息 INT_PTR CALLBACK NewDlgProc(HWN ...

  2. form表单中get和post两种提交方式的区别

    一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...

  3. jQuery应用操作之---网页选项卡(tabs)

    示例: <div class="tab"> <div class="tab_menu"> <ul> <li class ...

  4. windows下安装Python2和Python3共存

    一.Python安装 1.下载安装包 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi # 2.7安装包 https:/ ...

  5. BZOJ 4195: [Noi2015]程序自动分析 [并查集 离散化 | 种类并查集WA]

    题意: 给出若干相等和不等关系,判断是否可行 woc NOI考这么傻逼的题飞快打了一个种类并查集交上了然后爆零... 发现相等和不等看错了异或一下再叫woc90分 然后发现md$a \neq b, a ...

  6. BZOJ 2388: 旅行规划 [分块 凸包 等差数列]

    传送门 题意: 区间加和询问一段区间内整体前缀和的最大值 刚才还在想做完这道题做一道区间加等差数列结果发现这道就是.... 唯一的不同在于前缀和一段区间加上等差数列后,区间后面也要加上一个常数!!! ...

  7. BZOJ 3879: SvT [虚树 后缀树]

    传送门 题意: 多次询问,给出一些后缀,求两两之间$LCP$之和 哈哈哈哈哈哈哈竟然$1A$了,刚才还在想如果写不好这道题下节数学就不上了,看来是上天让我上数学课啊 $Suffix\ Virtual\ ...

  8. [Python Study Notes]进程信息(丁丁软件监控进程,http-post)

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

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

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

  10. 设为首页/加入收藏JS代码

    传统网站常用的设为首页/加入收藏js代码 <a href="javascript:void(0)" onclick="sethome(this,window.loc ...