项目介绍:采用restful api进行接口规范 / 项目框架SpringBoot+mybatis Plus / 采用mysql进行数据存储 / 采用swaggerUI进行前后端业务分离式开发。

开发环境:JDK1.8+Mysql8.0.12+IDEAL

实现功能:springboot搭建整体框架,MybatisPlus动态生成Dao+Services+Entity+Controller结构

项目介绍:无实际的业务操作,都是测试功能。其中为了区别mybastis和mybatisPlus,特意写了两个接口分别采用mapper.xml进行dao层操作和采用Iservice提供的CRUD操作进行数据查询。

ps:如果对springboot和mybayisPlus已了解,可直接访问码云进行demo下载 https://gitee.com/xc199534/SpringBootMybatisPlus/

----------------------------------------------------------分割线---------------------------------------------

1.项目整体结构

其中Config中包括MybatisPlusConfig和SwaggerConfig两个类,分别用于初始化MybatisPlus和Swagger基础设置。

数据库结构,采用navicat进行可视化管理。

2.配置文件application.properties

也可采用.yml格式进行配置文件设置,本项目是使用.properties。

spring.application.name=spring-boot-config
server.port=8080
server.context-path=/ #mybatis mapper文件的位置
mybatis.mapper-locations=classpath*:mapper/*.xml
#扫描pojo类的位置,在此处指明扫描实体类的包,在mapper中就可以不用写pojo类的全路径名了
mybatis.type-aliases-package=com.example.demo
#可以通过mybatis.config-location属性来指定mybatis的配置文件的位置,
#mybatis.config-location=classpath:mybatis-config.xml

#数据库参数设置
jdbc.type=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.pom.xml内容(所有不上项目完整pom.xml的demo都是耍流氓)

<dependencies>
<!-- Springboot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<!-- <version>2.1.3</version> -->
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<!-- <version>3.0.9</version> -->
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<scope>provided</scope>
</dependency> <!-- 阿里巴巴druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency> <!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <!-- mybatisplus与springboot整合 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.3</version>
</dependency> <!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency> <!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency> </dependencies>

3.自动生成代码(Dao/service/Entity)

调用MpGenerator.java的主函数生成定义好MVC层结构(MpGenerator定义了文件位置,文件名称,依赖关系等属性)。

Dao层:生成*Dao.java文件和*Dao.xml,后者可理解为Dao层的数据库映射操作,mybatis支持在.xml文件中写数据库CURD语句,但myatisPlus支持使用内置的CRUD操作,避免了复杂的数据库语句。

Service层 :生成一个接口文件,一个接口实现类。

Entity层:生成实体类,对应到数据库的表结构。

SchoolDao.java

package com.example.demo.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.example.demo.entity.School;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface SchoolDao extends BaseMapper<School> {
School getSchoolById(@Param("id") int id);
}

SchoolService.java

import com.baomidou.mybatisplus.service.IService;
import com.example.demo.entity.School;
import org.elasticsearch.index.query.QueryStringQueryBuilder; public interface SchoolService extends IService<School> {
public School getSchoolById(int id);
// public Iterable<School> searchByES(QueryStringQueryBuilder builder); }

SchoolServiceImpl.java

import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.example.demo.dao.SchoolDao;
import com.example.demo.entity.School;
import com.example.demo.services.SchoolService;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class SchoolServiceImpl extends ServiceImpl<SchoolDao, School> implements SchoolService {
@Override
public School getSchoolById(int id) {
return baseMapper.selectById(id);
}
}

School.java

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import org.springframework.data.elasticsearch.annotations.Document; import java.io.Serializable; @TableName("school")
@Document(indexName = "education", type = "school")
public class School implements Serializable {
@TableId("ID")
private int id; @TableField("NAME")
private String name; @TableField("RANGE")
private int range; @TableField("AGE")
private int age; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getRange() { return range; }
public void setRange(int range) { this.range = range; }
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "School{" +
"id=" + id +
", name='" + name +
", range=" + range +
", age=" + age +
'}';
}
}

4、Controller层

@RestController
@RequestMapping("/")
public class SampleController {
@Autowired
private UserService userService; @Autowired
private SchoolService schoolService; @Autowired
private testDao testdao; @Autowired
private ElasticsearchTemplate elasticsearchTemplate; @ApiOperation(value = "测试")
@GetMapping("/home")
String home() {
return "Hello World!";
} @RequestMapping(value = "/getUser", method = RequestMethod.GET)
public User helloUser() {
User user = userService.getUserById(1);
System.out.println(user);
return user;
} @ApiOperation(value = "采取mybatis方式查询")
@ApiImplicitParam(name = "id", value = "用户id", paramType = "path", required = true)
@GetMapping("/getSchool/maybatis/{id}")
public School helloSchool1(@PathVariable("id") int id) {
School school = schoolService.getSchoolById(id);
System.out.println(school);
return school;
} @ApiOperation(value = "采取mybatis-plus方式查询")
@ApiImplicitParam(name = "id", value = "用户id", paramType = "path", required = true)
@GetMapping("/getSchool/maybatis-plus/{id}")
public School helloSchool2(@PathVariable("id") int id) {
School school = schoolService.selectById(id);
System.out.println(school);
return school;
} @ApiOperation(value = "插入数据")
@ApiImplicitParam(name = "school", value = "学校信息", paramType = "body", required = true)
@PostMapping("/insert/school")
public Boolean insertSchool(@RequestBody School school) {
Boolean tag = schoolService.insert(school);
System.out.println(tag);
return tag;
}
}

5、调用主程序启动

@SpringBootApplication
@MapperScan("com.example.demo.dao")
@ComponentScan(basePackages = {
"com.example.demo.config",
"com.example.demo.controller",
"com.example.demo.services"})
public class DemoApplication { public static void main(String[] args) { //System.setProperty("es.set.netty.runtime.available.processors", "false");
SpringApplication.run(DemoApplication.class, args);
}
}

启动成功后访问:http://localhost:8080/swagger-ui.html#/,显示下图效果即配置成功。

springBoot+mybatisPlus小demo的更多相关文章

  1. Springboot演示小Demo

    模拟数据库演示springboot小测试 1.编写一个实体类:user package com.wisezone.test; import java.io.Serializable; public c ...

  2. IntelliJ IDEA搭建SpringBoot的小Demo

    首先简单介绍下Spring Boot,来自度娘百科:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进 ...

  3. 1.IntelliJ IDEA搭建SpringBoot的小Demo

    转自:http://www.cnblogs.com/weizaibug/p/6657077.html 首先简单介绍下Spring Boot,来自度娘百科:Spring Boot是由Pivotal团队提 ...

  4. spring-boot+mybatisPlus+shiro的集成demo 我用了5天

    spring-boot + mybatis-plus + shiro 的集成demo我用了五天 关于shiro框架,我还是从飞机哪里听来的,就连小贱都知道,可我母鸡啊.简单百度了下,结论很好上手,比s ...

  5. springboot + mybatisPlus 入门实例 入门demo

    springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...

  6. SpringBoot+Mybatis-Plus整合Sharding-JDBC5.1.1实现单库分表【全网最新】

    一.前言 小编最近一直在研究关于分库分表的东西,前几天docker安装了mycat实现了分库分表,但是都在说mycat的bug很多.很多人还是倾向于shardingsphere,其实他是一个全家桶,有 ...

  7. 多线程之批量插入小demo

    多线程之批量插入 背景 昨天在测试mysql的两种批量更新时,由于需要入库大量测试数据,反复执行插入脚本,过程繁琐,档次很低,测试完后我就想着写个批量插入的小demo,然后又想写个多线程的批量插入的d ...

  8. springboot+mybatisplus 测试代码生成

    测试springboot + mybatisplus 实现代码生成   使用默认的模板引擎 pom.xml文件 <?xml version="1.0" encoding=&q ...

  9. 2、SpringBoot+MybatisPlus整合-------BaseCRUD

    开发工具:STS 代码下载链接:GitHub管理代码 版本: Springboot:1.5.14.RELEASE 使用2.0以上的Springboot,会报出一些异常.欢迎知道异常原因的大牛解惑. M ...

随机推荐

  1. Effective C++ .08 别让异常逃离析构函数

    异常不怎么用,C++能自己控制析构过程,也就有这个要求了.容器不能完全析构其中的元素真是太危险了

  2. 多版本python如何切换

    一.在命令行中 通过py -x 二.在py文件中 头部字段添加 #!python2 或 #!python3 即可调用相应版本解释器 命令行调用python:py helloworld.py

  3. HTML5 : 文件上传下载

    网站建设中,文件上传与下载在所难免,HTML5中提供的API在前端有着丰富的应用,完美的解决了各个浏览器的兼容性问题,所以赶紧get吧! FileList 对象和 file 对象 HTML 中的 in ...

  4. VS2013 C++ 动态链接库的生成

    原文:http://www.cnblogs.com/djiankuo/p/5092025.html 这个东西搞了好几天,现在终于没有问题了,其实现在想来还是微软做的东西好用啊,在这里点个赞!!! LL ...

  5. EF多实体对应单表

    1.EF多实体对应单表 适用场景:单数据库表,表数据有较长用字段,有不常用或者大数据字段. 2.建表语句 CREATE TABLE [Chapter2].[Photograph]( ,) primar ...

  6. 定制化移动办公APP:打造企业专属的“钉钉”“纷享销客”,实现企业办公管理一体化

    一.项目背景 随着信息化社会的高速发展,市场竞争日益激烈,传统的管理和办公系统多且复杂,用户需要使用多个系统才可完成一项工作,而且各个系统的界面和风格存在差异,造成了信息查找不便,大大降低了用户的工作 ...

  7. WPF控件相对位置解析

    WPF控件相对位置的获取方法是比较简单的.对于初学者来说,掌握这一技巧的应用,可以帮助以后对WPF的深入学习,而且在实际使用中,这是一个非常常用的方法. 我们知道WPF有着比较灵活的布局方式,关于某个 ...

  8. Linux文件系统的实现 ZZ

    作者:Vamei 出处:http://www.cnblogs.com/vamei Linux文件管理从用户的层面介绍了Linux管理文件的方式.Linux有一个树状结构来组织文件.树的顶端为根目录(/ ...

  9. Python初学者第九天 字符串、列表、字典练习

    # -*- coding: utf-8 -*-写代码,有如下字典,按要求实现每个功能dic={'k1':'v1','k2':'v2','k3':'v3'}1.请循环遍历出所有的key:dic={'k1 ...

  10. Angular开启两个项目方法

    Angular开启两个项目方法: ng server --port 80