SpringBoot整合JpaMapper实现基于mybatis的快速开发

官方主页

Jpa-Mapper

概述

Jpa-Mapper是一款基于Mybatis的快速开发工具,能将jpa-hibernate的书写风格基于mybatis实现,同时保留mybatis的特性。基于Jpa-Mapper,我们可以使用mybatis的同时,方便快捷地生成我们的CRUD代码。

本篇主要介绍SpringBoot基于Jpa-Mapper实现CRUD功能。

开始搭建

pom.xml文件

首先引入maven的依赖jar包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>spring-boot-example</artifactId><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version></parent><name>spring-boot-example</name><description>Demo project for Spring Boot</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mybatis.version>3.4.6</mybatis.version><mybatis-spring.version>1.3.2</mybatis-spring.version><mybatis-spring-boot.version>1.3.0</mybatis-spring-boot.version><jpa.version>1.0</jpa.version><jpa-mapper.version>2.0</jpa-mapper.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-dbcp2</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring.version}</version></dependency><dependency><groupId>cn.pomit</groupId><artifactId>jpa-mapper-spring-boot-starter</artifactId><version>${jpa-mapper.version}</version></dependency><!--必须依赖--><dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

SpringBoot配置文件application.properties

server.port=8080spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/feiyun?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=cff
spring.datasource.password=123456spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.datasource.dbcp2.max-wait-millis=60000
spring.datasource.dbcp2.min-idle=20
spring.datasource.dbcp2.initial-size=2
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.test-while-idle=true
spring.datasource.dbcp2.test-on-borrow=true
spring.datasource.dbcp2.test-on-return=falsemybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

SpringBoot启动文件


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication
public class ApiApplication {public static void main(String[] args) {SpringApplication.run(ApiApplication.class, args);}
}

到这里,SpringBoot的环境已经建好了,下面可以引入JpaMapper了。

JpaMapper引入

建表sql

首先建好表,如建表语句为:

CREATE TABLE `f_personal_info` (`domain` varchar(16) NOT NULL DEFAULT '',`user_name` varchar(64) DEFAULT NULL,`real_name` varchar(64) DEFAULT NULL,`mobile` varchar(13) DEFAULT NULL,`web_name` varchar(100) DEFAULT NULL,`email` varchar(64) DEFAULT NULL,`content` text,`file_id` bigint(20) DEFAULT NULL,`status` int(4) DEFAULT NULL COMMENT '0:通过 1:待审核 2:拒绝',`edit_type` int(1) unsigned zerofill DEFAULT NULL COMMENT '0:文件修改 1:文件无修改',`create_time` datetime DEFAULT NULL,PRIMARY KEY (`domain`)
)

建表语句可以直接从navcat复制。

生成实体

生成实体domain。(可以在网站https://www.pomit.cn/java/java/sqlToSpringboot.html一站式生成实体、DAO、Service、Controller)

在网站上生成的实体是Jpa-hibernate的实体,我们需要做下简单调整,将所有映射到数据库的实体都要加上@Column。

实体PersonalInfo:


import javax.persistence.Table;import java.util.Date;import javax.persistence.Column;
import javax.persistence.Id;@Table(name = "f_personal_info")
public class PersonalInfo {@Id@Column()private String domain;@Column(name = "user_name")private String userName;@Column(name = "real_name")private String realName;@Column()private String mobile;@Column(name = "web_name")private String webName;@Column()private String email;@Column()private String content;@Column(name = "file_id")private long fileId;@Column(name = "edit_type")private long editType;private String webUrl;@Column()private Integer status;@Column(name = "create_time")private Date createTime;public void setDomain(String domain) {this.domain = domain;}public String getDomain() {return domain;}public void setUserName(String userName) {this.userName = userName;}public String getUserName() {return userName;}public void setRealName(String realName) {this.realName = realName;}public String getRealName() {return realName;}public void setMobile(String mobile) {this.mobile = mobile;}public String getMobile() {return mobile;}public void setWebName(String webName) {this.webName = webName;}public String getWebName() {return webName;}public void setEmail(String email) {this.email = email;}public String getEmail() {return email;}public void setContent(String content) {this.content = content;}public String getContent() {return content;}public void setFileId(long fileId) {this.fileId = fileId;}public long getFileId() {return fileId;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}public String getWebUrl() {return webUrl;}public void setWebUrl(String webUrl) {this.webUrl = webUrl;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}public long getEditType() {return editType;}public void setEditType(long editType) {this.editType = editType;}
}

生成DAO

生成Dao(或者说Mapper)。(可以在网站https://www.pomit.cn/java/java/sqlToSpringboot.html一站式生成实体、DAO、Service、Controller)

在网站上生成的Dao是Jpa-hibernate的Dao,我们需要做下简单调整,直接将CrudRepository改为CrudMapper即可,另外加上注解@Mapper。

如,PersonalInfoDao:


import java.util.List;import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import com.cff.feiyun.api.domain.PersonalInfo;
import cn.pomit.jpamapper.core.mapper.CrudMapper;@Mapper
public interface PersonalInfoDao extends CrudMapper<PersonalInfo, String> {List<PersonalInfo> findByStatus(int status);@Select({"<script>","select domain domain,real_name realName,create_time createTime,web_name webName,mobile mobile,user_name userName,email email,content content,file_id fileId,status status","FROM f_personal_info where user_name = #{userName, jdbcType=VARCHAR}","order by create_time desc limit 1","</script>"})public PersonalInfo findByUserNameNewest(@Param("userName") String userName);
}

生成Service

生成Service。(可以在网站https://www.pomit.cn/java/java/sqlToSpringboot.html一站式生成实体、DAO、Service、Controller)

如,PersonalInfoService:


import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.cff.feiyun.api.dao.PersonalInfoDao;
import com.cff.feiyun.api.domain.PersonalInfo;@Service
public class PersonalInfoService {@AutowiredPersonalInfoDao personalInfoDao;public void save(PersonalInfo personalInfo) {personalInfoDao.save(personalInfo);}public void delete(PersonalInfo personalInfo) {personalInfoDao.deleteEntity(personalInfo);}public void update(PersonalInfo personalInfo) {personalInfoDao.update(personalInfo);}public List<PersonalInfo> findAll() {return (List<PersonalInfo>) personalInfoDao.findAll();}public PersonalInfo findById(String id) {return personalInfoDao.findOne(id);}
}

生成Controller

生成Controller。(可以在网站https://www.pomit.cn/java/java/sqlToSpringboot.html一站式生成实体、DAO、Service、Controller)

如,PersonalInfoWeb:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.cff.feiyun.api.domain.PersonalInfo;
import com.cff.feiyun.api.dto.ResultModel;
import com.cff.feiyun.api.service.PersonalInfoService;@RestController
@RequestMapping("/personalInfo")
public class PersonalInfoWeb {@AutowiredPersonalInfoService fPersonalInfoService;@RequestMapping(value = "/add", method = { RequestMethod.POST })public ResultModel add(@RequestBody PersonalInfo fPersonalInfo) {fPersonalInfoService.save(fPersonalInfo);return ResultModel.ok();}@RequestMapping(value = "/delete", method = { RequestMethod.POST })public ResultModel delete(@RequestBody PersonalInfo fPersonalInfo) {fPersonalInfoService.delete(fPersonalInfo);return ResultModel.ok();}@RequestMapping(value = "/update", method = { RequestMethod.POST })public ResultModel update(@RequestBody PersonalInfo fPersonalInfo) {fPersonalInfoService.save(fPersonalInfo);return ResultModel.ok();}@RequestMapping(value = "/getAll", method = { RequestMethod.GET })public ResultModel getAll() {return ResultModel.ok(fPersonalInfoService.findAll());}@RequestMapping(value = "/getOne", method = { RequestMethod.GET })public ResultModel getOne(@RequestParam("id") String id) {return ResultModel.ok(fPersonalInfoService.findById(id));}}
/*** @author cff*/
public class ResultModel {private int code;private String msg;private Object data;public ResultModel(){}public ResultModel(int code, String msg) {this.code = code;this.msg = msg;}public ResultModel(int code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public int getcode() {return code;}public void setcode(int code) {this.code = code;}public String getmsg() {return msg;}public void setmsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static ResultModel ok() {return new ResultModel(0,'成功');}public static ResultModel ok(Object data) {return new ResultModel(0,'成功', data);}public static ResultModel error() {return new ResultModel(1,'失败');}public static ResultModel error(String msg) {return new ResultModel(1, msg);}
}

至此SpringBoot和JpaMppaer整合可以正常使用了。

SpringBoot整合JpaMapper实现基于mybatis的快速开发相关推荐

  1. SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)

    学习目标: Spring Boot 整合JWT实现基于自定义注解的 登录请求接口拦截 例: 一篇掌握 JWT 入门知识  1.1 在学习SpringBoot 整合JWT之前,我们先来说说JWT进行用户 ...

  2. Springboot整合WebSocket(基于Stomp)

    Springboot整合WebSocket(基于Stomp) 文章目录 Springboot整合WebSocket(基于Stomp) 参考链接 前言 STOMP 定义 STOMP Over WebSo ...

  3. Jeecg-Boot 1.0 版本发布,基于SpringBoot+Mybatis+AntDesign快速开发平台

    基于SpringBoot+Mybatis+AntDesign企业级快速开发平台 引言:      Jeecg-Boot 一款基于代码生成器的J2EE快速开发框架!  采用前后端分离技术: Spring ...

  4. SpringBoot整合mybatis进行快速开发

    SpringBoot整合mybatis进行数据库操作 1.环境的搭建 pom.xml <!--核心模块,包括自动配置支持.日志和YAML --> <dependencies>& ...

  5. SpringBoot整合:Druid、MyBatis、MyBatis-Plus、多数据源、knife4j、日志、Redis,Redis的Java操作工具类、封装发送电子邮件等等

    SpringBoot笔记 一.SpringBoot 介绍 1.1.SpringBoot简介 SpringBoot 是一个快速开发的框架, 封装了Maven常用依赖.能够快速的整合第三方框架:简化XML ...

  6. SpringBoot整合BeetlSql3.0及BeetlSql3.0快速入门说明

    一 SpringBoot整合BeetlSql3.0 1.1 加入依赖 <dependencies><dependency><groupId>org.springfr ...

  7. 基于Visual Graph快速开发出电力系统

    一.如何快速拥有自主知识产权的高品质的电力系统 每一个与电力相关的公司都想拥有自主知识产权的电力系统产品,让公司的价值能得到快速的提升,让公司在同行的竞争力大幅度提高,让公司的产品技术水平迅速达到同行 ...

  8. 带工作流的springboot后台管理项目,一个企业级快速开发解决方案

    后台管理类项目 项目名称: JeeSite 项目介绍: 这是个典型的SSM后台管理项目(不是有很多小伙伴让推荐SSM项目练手嘛),基于经典技术组合(Spring MVC.Shiro.MyBatis.B ...

  9. springmvc+activiti 完美整合- 流程在线设计+代码生成器+UI快速开发库,提高一半的开发效率

    JEECG(J2EE Code Generation) 是一款基于代码生成器的智能开发平台,采用代码生成+手工MERGE半智能开发模式, 可以帮助解决Java项目60%的重复工作,让开发更多关注业务逻 ...

  10. 基于浮云绘图 快速开发车站状态图

    高铁.地铁等火车进出车站时,需要实时监控轨道.道岔.信号机等设备的状态,涉及设备数千个,如果形象.实时的展示设备状态,是一个不小的难题. 抽象的图形化的车站站场图,是业内成熟的方式.但是,要么性能(刷 ...

最新文章

  1. vim win装_VIM的代码补全工具YouCompleteMe在Windows上的安装攻略
  2. 数字万用表测量二极管、三极管
  3. 洛谷—— P1714 切蛋糕
  4. 【干货】网管的三个重要服务:AAA、NTP和SYSLOG
  5. Java中泛型Class T, T与Class ?
  6. et操作 python wps_拿起来就用的office二次开发(python,win32com使用经历总结)
  7. .NET Core 2.0 正式发布信息汇总
  8. spark算子_Spark篇之持久化算子
  9. 菜鸟驿站发布“新成长计划” 未来三年要让站点平均收入翻倍
  10. php 防止造假ip攻击,php防止网站被攻击的应急代码
  11. 关于maven下载依赖失败问题
  12. 除了停电之外,今年的CES还有这些“意外”……
  13. climbing-stairs-动态规划,爬楼梯的路径数
  14. oracle 密码忘记 找回密码
  15. 计算机网络 | 无盘工作站的建立
  16. 计算机安全排名,电脑安全卫士排行榜
  17. HTTP略显不足 IPFS/FIL异军突起 未来可期
  18. xp装html5,WindowsXP系统如何安装IIS5.1
  19. Vector、Sort课后题解
  20. 二维码与条形码的生成和识别使用

热门文章

  1. 百度没有文化(转载)
  2. 从零开始之驱动开发、linux驱动(七十一、电容触摸屏驱动)
  3. 运维的工作内容是什么?有哪几种分类?
  4. 树莓派4b主板特点_树莓派4B的入手操作
  5. 最新的android系统版本,Android8.0以上系统成为主流,你的手机更新到安卓那个版本了?...
  6. 瑞芯微板子人脸识别demo展现
  7. html设置文字超过字数_CSS限制字数,超出部份显示点点点...
  8. 第17节 三层交换机技术—工作原理及相关命令
  9. Kienct与Arduino学习笔记(1) 基础知识之Arduino’Kinect‘Processing
  10. [剑指Offer]丑数[Python]