经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
springBoot+mybatisPlus小demo
来源:cnblogs  作者:熊畅_Giser  时间:2018/10/25 9:37:02  对本文有异议

项目介绍:采用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。

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

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

 

 

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

  1. <dependencies>
  2. <!-- Springboot-->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-test</artifactId>
  10. <scope>test</scope>
  11. </dependency>
  12.  
  13. <dependency>
  14. <groupId>org.springframework.data</groupId>
  15. <artifactId>spring-data-elasticsearch</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.fasterxml.jackson.core</groupId>
  19. <artifactId>jackson-databind</artifactId>
  20. <!-- <version>2.1.3</version> -->
  21. </dependency>
  22. <dependency>
  23. <groupId>net.java.dev.jna</groupId>
  24. <artifactId>jna</artifactId>
  25. <!-- <version>3.0.9</version> -->
  26. </dependency>
  27.  
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-data-redis</artifactId>
  31. <scope>provided</scope>
  32. </dependency>
  33.  
  34. <!-- 阿里巴巴druid数据库连接池 -->
  35. <dependency>
  36. <groupId>com.alibaba</groupId>
  37. <artifactId>druid</artifactId>
  38. <version>1.1.10</version>
  39. </dependency>
  40.  
  41. <!-- mysql驱动 -->
  42. <dependency>
  43. <groupId>mysql</groupId>
  44. <artifactId>mysql-connector-java</artifactId>
  45. </dependency>
  46.  
  47. <!-- mybatisplus与springboot整合 -->
  48. <dependency>
  49. <groupId>com.baomidou</groupId>
  50. <artifactId>mybatis-plus-boot-starter</artifactId>
  51. <version>2.3</version>
  52. </dependency>
  53.  
  54.  
  55. <!-- 模板引擎 -->
  56. <dependency>
  57. <groupId>org.apache.velocity</groupId>
  58. <artifactId>velocity</artifactId>
  59. <version>1.7</version>
  60. </dependency>
  61.  
  62. <!--swagger-->
  63. <dependency>
  64. <groupId>io.springfox</groupId>
  65. <artifactId>springfox-swagger2</artifactId>
  66. <version>2.9.2</version>
  67. </dependency>
  68. <dependency>
  69. <groupId>io.springfox</groupId>
  70. <artifactId>springfox-swagger-ui</artifactId>
  71. <version>2.9.2</version>
  72. </dependency>
  73.  
  74. </dependencies>

 

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

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

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

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

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

SchoolDao.java

  1. package com.example.demo.dao;
  2. import com.baomidou.mybatisplus.mapper.BaseMapper;
  3. import com.example.demo.entity.School;
  4. import org.apache.ibatis.annotations.Param;
  5. import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
  6. public interface SchoolDao extends BaseMapper<School> {
  7. School getSchoolById(@Param("id") int id);
  8. }
View Code

SchoolService.java

  1. import com.baomidou.mybatisplus.service.IService;
  2. import com.example.demo.entity.School;
  3. import org.elasticsearch.index.query.QueryStringQueryBuilder;
  4. public interface SchoolService extends IService<School> {
  5. public School getSchoolById(int id);
  6. // public Iterable<School> searchByES(QueryStringQueryBuilder builder);
  7. }
View Code

SchoolServiceImpl.java

  1. import com.baomidou.mybatisplus.service.impl.ServiceImpl;
  2. import com.example.demo.dao.SchoolDao;
  3. import com.example.demo.entity.School;
  4. import com.example.demo.services.SchoolService;
  5. import org.elasticsearch.index.query.QueryStringQueryBuilder;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class SchoolServiceImpl extends ServiceImpl<SchoolDao, School> implements SchoolService {
  10. @Override
  11. public School getSchoolById(int id) {
  12. return baseMapper.selectById(id);
  13. }
  14. }
View Code

School.java

  1. import com.baomidou.mybatisplus.annotations.TableField;
  2. import com.baomidou.mybatisplus.annotations.TableId;
  3. import com.baomidou.mybatisplus.annotations.TableName;
  4. import org.springframework.data.elasticsearch.annotations.Document;
  5. import java.io.Serializable;
  6. @TableName("school")
  7. @Document(indexName = "education", type = "school")
  8. public class School implements Serializable {
  9. @TableId("ID")
  10. private int id;
  11. @TableField("NAME")
  12. private String name;
  13. @TableField("RANGE")
  14. private int range;
  15. @TableField("AGE")
  16. private int age;
  17. public int getId() {
  18. return id;
  19. }
  20. public void setId(int id) {
  21. this.id = id;
  22. }
  23. public String getName() {
  24. return name;
  25. }
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. public int getRange() { return range; }
  30. public void setRange(int range) { this.range = range; }
  31. public int getAge() {
  32. return age;
  33. }
  34. public void setAge(int age) {
  35. this.age = age;
  36. }
  37. @Override
  38. public String toString() {
  39. return "School{" +
  40. "id=" + id +
  41. ", name='" + name +
  42. ", range=" + range +
  43. ", age=" + age +
  44. '}';
  45. }
  46. }
View Code

 

4、Controller层

  1. @RestController
  2. @RequestMapping("/")
  3. public class SampleController {
  4. @Autowired
  5. private UserService userService;
  6. @Autowired
  7. private SchoolService schoolService;
  8. @Autowired
  9. private testDao testdao;
  10. @Autowired
  11. private ElasticsearchTemplate elasticsearchTemplate;
  12. @ApiOperation(value = "测试")
  13. @GetMapping("/home")
  14. String home() {
  15. return "Hello World!";
  16. }
  17. @RequestMapping(value = "/getUser", method = RequestMethod.GET)
  18. public User helloUser() {
  19. User user = userService.getUserById(1);
  20. System.out.println(user);
  21. return user;
  22. }
  23. @ApiOperation(value = "采取mybatis方式查询")
  24. @ApiImplicitParam(name = "id", value = "用户id", paramType = "path", required = true)
  25. @GetMapping("/getSchool/maybatis/{id}")
  26. public School helloSchool1(@PathVariable("id") int id) {
  27. School school = schoolService.getSchoolById(id);
  28. System.out.println(school);
  29. return school;
  30. }
  31. @ApiOperation(value = "采取mybatis-plus方式查询")
  32. @ApiImplicitParam(name = "id", value = "用户id", paramType = "path", required = true)
  33. @GetMapping("/getSchool/maybatis-plus/{id}")
  34. public School helloSchool2(@PathVariable("id") int id) {
  35. School school = schoolService.selectById(id);
  36. System.out.println(school);
  37. return school;
  38. }
  39. @ApiOperation(value = "插入数据")
  40. @ApiImplicitParam(name = "school", value = "学校信息", paramType = "body", required = true)
  41. @PostMapping("/insert/school")
  42. public Boolean insertSchool(@RequestBody School school) {
  43. Boolean tag = schoolService.insert(school);
  44. System.out.println(tag);
  45. return tag;
  46. }
  47. }
View Code

 

5、调用主程序启动

  1. @SpringBootApplication
  2. @MapperScan("com.example.demo.dao")
  3. @ComponentScan(basePackages = {
  4. "com.example.demo.config",
  5. "com.example.demo.controller",
  6. "com.example.demo.services"})
  7. public class DemoApplication {
  8. public static void main(String[] args) {
  9. //System.setProperty("es.set.netty.runtime.available.processors", "false");
  10. SpringApplication.run(DemoApplication.class, args);
  11. }
  12. }

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

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号