新手初用mybatis
近期用了下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相关推荐
- 初看Mybatis 源码 (二) Java动态代理类
先抛出一个问题,用过Mybatis的都知道,我们只需要定义一个Dao的接口,在里面写上一些CRUD相关操作,然后配置一下sql映射文件,就可以达到调用接口中的方法,然后执行sql语句的效果,为什么呢? ...
- Raspberry Pi(树莓派2代B型新手初体验)
哇,激动万分,新年新气象,我在2016年,我购置了一块信用卡大小的板子,树莓派,昨天到的货,晚上就开始了折腾之旅 ①没有有线网络情况下,连接上无线网,在此需要感谢一人, ②准备工具(硬件): ⒈ 树 ...
- Mybatis使用接口开发
项目结构 Employee.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...
- Spring和Mybatis集成,如何批量insert update?以及一些通用Dao的设想
2019独角兽企业重金招聘Python工程师标准>>> 之所以写这篇文章,主要是给新手提供一些mybatis使用的技巧和思路 现在国内很多项目都使用了mybatis作为ORM框架 我 ...
- mybatis中使用XML配置文件方式实现CRUD模板流程
场景 Eclipse+Mybatis3.4+log4j1.2+mysql5.7 使用新手入门学习Mybatis时实例模板. 实现 Eclipse中新建项目 1.打开EClipse,File--new- ...
- 浅谈MyBatis二级缓存
一.二级缓存介绍 我们知道MyBatis 提供了一级缓存来减轻数据库的压力,但是一级缓存是一个SqlSession(会话)级别的缓存,这也就意味着一级缓存的适用范围比较小.在一级缓存的基础上,MyBa ...
- Mybatis报错Could not find resource mybatis.xml
Mybatis报错Could not find resource mybatis.xml 初习Mybatis遇到找不到资源问题 第一种情况 解决方法 第二种情况 初习Mybatis遇到找不到资源问题 ...
- 弘辽科技:淘宝新手卖家该如何让自己的店铺脱颖而出?
原标题<弘辽科技:淘宝新手卖家该如何让自己的店铺脱颖而出?> 毫不疑问,随着互联网经济的蓬勃发展,也带动着电商行业的火爆发展,淘宝开店成了当下很多年轻人的创业首要选择.作为一个新手,要如何 ...
- 初入职场必读:那些关于你职业生涯和收入的规则和建议
写在前面 最近很多读者.朋友和我探讨起职场的规则,特别是初入职场的小白程序员,很容易因为"不懂规矩"或者"傻乎乎"的行为导致自己的职业生涯受到阻碍.莫名其妙的考 ...
- mybatis异常:Could not find result map Java.util.Map 问题分析及解决
使用mybatis时,自己或者同事踩到的坑给大家分享下,有其他问题分享的同学欢迎交流~ 现象:编译未出现异常,调用相关服务时候,出现 Could not find result map Java.ut ...
最新文章
- 逻辑智力题【更新中】
- 将tomcat添加到服务中
- java 运行环境注册表_Java运行环境与Windows注册表
- 自动添加html结束标志,HTML:包含或排除可选的结束标记?
- C语言(CED)01背包——动态规划第二题
- git rebase --onto
- 七月算法机器学习1 概率论
- E-prime问题(安装.net3.5)
- Ubuntu 20.04 双系统安装过程(新手)
- win10右键卡顿原因_右键菜单反应慢?win10系统解决右键菜单卡顿方法
- ARP缓存表过期问题
- 打火机与公主裙剧中的爱心
- lo流知识(字节流 字符流)
- 在word中粘贴的图片为什么显示不完整
- python中的pil模块_初学python的PIL模块
- 申请ssl 验证域名 失败了 中间证书
- php能抓抖音短视频教程,初学者必须要掌握的抖音短视频拍摄的小技巧
- 我想给他拿给他拿台计算机的英文,NO-BOOK 傻瓜机英语口语中级版The machine can do the work of ten men.这机器...
- 福州发生持刀伤人事件:1死19伤 警方全力追捕嫌犯
- 两种技能增长曲线:对数增长曲线(先快后慢)和指数增长曲线(先慢后快)
热门文章
- python tts 离线 linux_ubuntu16.04安装科大讯飞Linux SDK实现离线语音合成(TTS)
- 安装jdk的时候为什么会有两个jre文件
- 视频教程-零基础Python自动化办公(漫画版)-Python
- 【HUSTOJ】1046: 字符图形2-星号直角
- dell 2420 bios 降级文件,可以用回独立显卡
- 博饼游戏奖项积分设置
- 如何快速设计一款万能遥控器产品原型(SoC免开发)
- 玩qq游戏提示计算机内存不足,win10系统玩游戏提示“计算机内存不足”怎么办...
- Python数据库sqlite3详解
- 百度云盘Mac破解不限制下载速度-百度网盘客户端 - Go语言编写