一、介绍
1.springboot是spring项目的总结+整合
当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间还会出现冲突,让你的项目出现难以解决的问题。基于这种情况,springboot横空出世,在考虑到Struts控制层框架有漏洞,springboot放弃(大多数企业同样如此)了Struts,转而代之是springMVC,不过,springboot是自动集成springMVC的,不需要任何配置,不需要任何依赖,直接使用各种控制层注解。springboot是springcloud的基础,是开启微服务时代的钥匙。
二、新建springboot工程
1. 使用idea2019新建project,选择spring Initializr,next
2. 填写坐标信息,next
3. web选择Spring Web Starter,SQL选择MyBatis Framework、MySQL Driver,next
4. 填写项目名已经存放位置,finish
三、使用mybatis generator构建项目
1. 数据库
创建数据库
create database ssdj;
创建phone表
CREATE TABLE `phone` ( `id` int(11) NOT NULL AUTO_INCREMENT, `brand` varchar(255) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_8t3jhwmmlxpq3qcwcy1a3alts` (`user_id`), CONSTRAINT `FK_8t3jhwmmlxpq3qcwcy1a3alts` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建user表
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `password` varchar(255) DEFAULT NULL, `username` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
插入数据
user phone
实现了一个用户拥有多部手机的业务
2. pom.xml
在创建springboot工程创建时勾选的Dependencies会在pom中添加,所以pom.xml基本不需要自己添加依赖
为pom.xml添加generator插件,其它不用动
org.mybatis.generator mybatis-generator-maven-plugin ${basedir}/src/main/resources/generatorConfig.xml true true
springboot方便之处就是“自以为是”的为工程添加默认中间件,并且不需要自己添加依赖,不需要写额外配置,如数据库连接池用的是HirikaCP,其它的中间件用的都是市场上评价最好最稳定的
3. application.properties
在src/main/resource下找到application.properties文件
因为properties文件可读性差,将其更名为application.yml,并在其中添加
spring: profiles: active: dev
4. application-dev.yml
在resource下创建application-dev.yml文件,并在其中添加
server: port: 8080spring: datasource: username: root password: root url: jdbc:mysql://localhost:3306/ssdj?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false driver-class-name: com.mysql.cj.jdbc.Drivermybatis: mapper-locations: classpath:mapper/*Mapper.xml type-aliases-package: club.xcreeper.ssm_generator_restful.entity
#showSql logging: level: club: xcreeper: ssm_generator_restful: dao: debug
5. generatorConfig.xml
在resource目录下创建generatorConfig.xml文件,在其中添加
6. logback-spring.xml
在resource目录下创建logback-spring.xml文件,在其中添加
logback info ${CONSOLE_LOG_PATTERN} UTF-8 ${log.path}/log_debug.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log 100MB 15 debug ACCEPT DENY ${log.path}/log_info.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log 100MB 15 info ACCEPT DENY ${log.path}/log_warn.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log 100MB 15 warn ACCEPT DENY ${log.path}/log_error.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log 100MB 15 ERROR ACCEPT DENY
7. 运行generatorConfig.xml文件,自动生成代码
在idea工具的顶部 Run - Edit Configurations
在其左上角“+”号里添加Maven
在Command line中填写 mybatis-generator:generate -e,ok
在idea顶部 Run - Run 'xxx [mybatis-generator:generate -e]'
ok,再去查看代码是否生成
8. 设置实体关系
因为一个用户拥有多部手机,所以在User实体类中加入private List<Phone> phones; 和 getter、setter
并且去掉Phone实体类中的user_id属性和其getter、setter
在UserMapper.xml文件中改造ResultMap映射关系
并且改造selectByPrimaryKey查询语句
9. 再编写service层和controller层即可,可通过postman测试接口
(1)service及其实现
package club.xcreeper.ssm_generator_restful.service;import club.xcreeper.ssm_generator_restful.entity.User; public interface UserService { User getUser(int id); }
package club.xcreeper.ssm_generator_restful.service.impl; import club.xcreeper.ssm_generator_restful.dao.UserMapper;
import club.xcreeper.ssm_generator_restful.entity.User;
import club.xcreeper.ssm_generator_restful.service.UserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUser(int id) { return userMapper.selectByPrimaryKey(id); } }
(2) controller
使用Restful api 风格
package club.xcreeper.ssm_generator_restful.controller;import club.xcreeper.ssm_generator_restful.entity.User;import club.xcreeper.ssm_generator_restful.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/user")public class UserController { @Autowired private UserService userService; @GetMapping(value = "/getOne/{id}") public User getUser(@PathVariable int id){ return userService.getUser(id); }}
10. 通过postman进行接口测试