近期用了下mybatis,感觉不错,比起hibernate来,好像简单不少。使用方法总结如下:

一、代码结构
要有实体类,映射类。映射在于决定如何访问数据库,实体类在于接收查询返回值。

二、映射
最关键的地方在于映射了吧。

我用的是spring boot,sql定义采用的是注解的方式。

package api.mapper;import api.entity.BootFull;
import api.entity.Fishboat_Radar;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;import java.util.List;@Repository
@Mapper
public interface FishboatMapper {//返回单表多条记录@Select("select * from fishboat_radar where sequence=(select max(sequence) from fishboat_radar)")List<Fishboat_Radar> getNewList();//返回多表多条记录@Select("select t1.*,\n" +"t3.imo,\n" +"t3.length,\n" +"t3.wide,\n" +"t3.mothershipmmsi, \n" +"t3.destination,\n" +"t3.vendorid,\n" +"t3.callsign,\n" +"t3.shipclass,\n" +"t3.shiptype,\n" +"t3.vesselname \n" +"from jczs.fishboat_radar t1\n" +"join (select max(sequence) as sequence from jczs.fishboat_radar) t2 on t1.sequence=t2.sequence\n" +"left outer join jczs.yb_hlx_ais t3 on t1.guid=t3.guid")List<BootFull> getFullNewList();//返回单表单条记录@Select("select * from fishboat_radar where GUID=#{guid}")Fishboat_Radar findByGUID(@Param("guid") String guid);
}

三、实体类

实体类的属性对应数据表字段,但似乎大小写没有啥关系,mybatis会自动匹配。

package api.entity;import java.util.Date;
import lombok.Getter;
import lombok.Setter;public class Fishboat_Radar{private @Getter @Setter String GUID;private @Getter @Setter long sequence;private @Getter @Setter long ID;private @Getter @Setter int type;private @Getter @Setter double latitude;private @Getter @Setter double longitude;private @Getter @Setter double speed;private @Getter @Setter double direction;private @Getter @Setter Date create_date;private @Getter @Setter int MMSI;private @Getter @Setter String targetName;private @Getter @Setter String timestamp;
}
package api.entity;import lombok.Getter;
import lombok.Setter;public class BootFull extends Fishboat_Radar {private @Getter @Setter int IMO;private @Getter @Setter long length;private @Getter @Setter long wide;private @Getter @Setter int motherShipMMSI;private @Getter @Setter String destination;private @Getter @Setter String vendorID;private @Getter @Setter String callSign;private @Getter @Setter String shipClass;private @Getter @Setter String shipType;private @Getter @Setter String vesselName;
}

四、相关配置文件

build.gradle

dependencies {compile("org.springframework.boot:spring-boot-starter-web")testCompile("org.springframework.boot:spring-boot-starter-test")//部署到外部tomcatprovidedCompile("org.springframework.boot:spring-boot-starter-tomcat")//thymeleafcompile("org.springframework.boot:spring-boot-starter-thymeleaf")//oraclecompile("com.oracle:ojdbc7:12.1.0.1")//mybatiscompile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0")testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0')
}

application.properties

spring.jpa.database=oracle
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@192.168.0.22:1522/pdbzjfwpt
spring.datasource.username=jczs
spring.datasource.password=jczs
spring.jpa.hibernate.ddl-auto=update#网上有些教程说需要指明实体类所在路径,事实上不需要
#mybatis.typeAliasesPackage=api.entity

五、调用
从代码来看,应用mybatis,代码会得到简化,因为Repository与mapper合在一起了,如果是hibernate,映射归映射,仓库归仓库。

package api.controller;import api.entity.Author;
import api.entity.BootFull;
import api.entity.Fishboat_Radar;
import api.mapper.FishboatMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping(value="/api/boats")
public class BoatController {@Autowiredprivate FishboatMapper boatMapper;@RequestMapping(value = {"/",""}, method = RequestMethod.GET)public List<Fishboat_Radar> getList() {List<Fishboat_Radar> boats = boatMapper.getNewList();return boats;}@RequestMapping(value = "/full", method = RequestMethod.GET)public List<BootFull> getFullList() {List<BootFull> boats = boatMapper.getFullNewList();return boats;}@RequestMapping(value = "/{guid}", method = RequestMethod.GET)public Fishboat_Radar findByGUID(@PathVariable String guid) {Fishboat_Radar boat = boatMapper.findByGUID(guid);return boat;}
}

新手初用mybatis相关推荐

  1. 初看Mybatis 源码 (二) Java动态代理类

    先抛出一个问题,用过Mybatis的都知道,我们只需要定义一个Dao的接口,在里面写上一些CRUD相关操作,然后配置一下sql映射文件,就可以达到调用接口中的方法,然后执行sql语句的效果,为什么呢? ...

  2. Raspberry Pi(树莓派2代B型新手初体验)

    哇,激动万分,新年新气象,我在2016年,我购置了一块信用卡大小的板子,树莓派,昨天到的货,晚上就开始了折腾之旅 ①没有有线网络情况下,连接上无线网,在此需要感谢一人, ②准备工具(硬件): ⒈  树 ...

  3. Mybatis使用接口开发

    项目结构 Employee.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...

  4. Spring和Mybatis集成,如何批量insert update?以及一些通用Dao的设想

    2019独角兽企业重金招聘Python工程师标准>>> 之所以写这篇文章,主要是给新手提供一些mybatis使用的技巧和思路 现在国内很多项目都使用了mybatis作为ORM框架 我 ...

  5. mybatis中使用XML配置文件方式实现CRUD模板流程

    场景 Eclipse+Mybatis3.4+log4j1.2+mysql5.7 使用新手入门学习Mybatis时实例模板. 实现 Eclipse中新建项目 1.打开EClipse,File--new- ...

  6. 浅谈MyBatis二级缓存

    一.二级缓存介绍 我们知道MyBatis 提供了一级缓存来减轻数据库的压力,但是一级缓存是一个SqlSession(会话)级别的缓存,这也就意味着一级缓存的适用范围比较小.在一级缓存的基础上,MyBa ...

  7. Mybatis报错Could not find resource mybatis.xml

    Mybatis报错Could not find resource mybatis.xml 初习Mybatis遇到找不到资源问题 第一种情况 解决方法 第二种情况 初习Mybatis遇到找不到资源问题 ...

  8. 弘辽科技:淘宝新手卖家该如何让自己的店铺脱颖而出?

    原标题<弘辽科技:淘宝新手卖家该如何让自己的店铺脱颖而出?> 毫不疑问,随着互联网经济的蓬勃发展,也带动着电商行业的火爆发展,淘宝开店成了当下很多年轻人的创业首要选择.作为一个新手,要如何 ...

  9. 初入职场必读:那些关于你职业生涯和收入的规则和建议

    写在前面 最近很多读者.朋友和我探讨起职场的规则,特别是初入职场的小白程序员,很容易因为"不懂规矩"或者"傻乎乎"的行为导致自己的职业生涯受到阻碍.莫名其妙的考 ...

  10. mybatis异常:Could not find result map Java.util.Map 问题分析及解决

    使用mybatis时,自己或者同事踩到的坑给大家分享下,有其他问题分享的同学欢迎交流~ 现象:编译未出现异常,调用相关服务时候,出现 Could not find result map Java.ut ...

最新文章

  1. 逻辑智力题【更新中】
  2. 将tomcat添加到服务中
  3. java 运行环境注册表_Java运行环境与Windows注册表
  4. 自动添加html结束标志,HTML:包含或排除可选的结束标记?
  5. C语言(CED)01背包——动态规划第二题
  6. git rebase --onto
  7. 七月算法机器学习1 概率论
  8. E-prime问题(安装.net3.5)
  9. Ubuntu 20.04 双系统安装过程(新手)
  10. win10右键卡顿原因_右键菜单反应慢?win10系统解决右键菜单卡顿方法
  11. ARP缓存表过期问题
  12. 打火机与公主裙剧中的爱心
  13. lo流知识(字节流 字符流)
  14. 在word中粘贴的图片为什么显示不完整
  15. python中的pil模块_初学python的PIL模块
  16. 申请ssl 验证域名 失败了 中间证书
  17. php能抓抖音短视频教程,初学者必须要掌握的抖音短视频拍摄的小技巧
  18. 我想给他拿给他拿台计算机的英文,NO-BOOK 傻瓜机英语口语中级版The machine can do the work of ten men.这机器...
  19. 福州发生持刀伤人事件:1死19伤 警方全力追捕嫌犯
  20. 两种技能增长曲线:对数增长曲线(先快后慢)和指数增长曲线(先慢后快)

热门文章

  1. python tts 离线 linux_ubuntu16.04安装科大讯飞Linux SDK实现离线语音合成(TTS)
  2. 安装jdk的时候为什么会有两个jre文件
  3. 视频教程-零基础Python自动化办公(漫画版)-Python
  4. 【HUSTOJ】1046: 字符图形2-星号直角
  5. dell 2420 bios 降级文件,可以用回独立显卡
  6. 博饼游戏奖项积分设置
  7. 如何快速设计一款万能遥控器产品原型(SoC免开发)
  8. 玩qq游戏提示计算机内存不足,win10系统玩游戏提示“计算机内存不足”怎么办...
  9. Python数据库sqlite3详解
  10. 百度云盘Mac破解不限制下载速度-百度网盘客户端 - Go语言编写