从零开始搭建SpringBoot的Demo

从零开始搭建SpringBoot的Demo

版本说明:

​ Sprngboot:2.1.3.RELEASE

​ jdk:1.8

​ Mysql:5.7

​ Idea:2018.2.4

功能:集成通用Mapper实现CRUD

整体项目结构

从零开始搭建SpringBoot的Demo_第1张图片

建表语句:

CREATE TABLE t_user (
ID int(11) NOT NULL AUTO_INCREMENT,
USERNAME varchar(255) DEFAULT NULL,
PASSWORD varchar(255) DEFAULT NULL,
AGE int(12) DEFAULT NULL,
SEX varchar(12) DEFAULT NULL,
BIRTHDAY date DEFAULT NULL,
CREATE_DATE date DEFAULT NULL,
UPDATE_DATE date DEFAULT NULL,
NOTE varchar(255) DEFAULT NULL,
PRIMARY KEY (ID) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

第一步:搭建项目

新建一个maven空工程
从零开始搭建SpringBoot的Demo_第2张图片

填好GroupId和ArtifactId直接next
从零开始搭建SpringBoot的Demo_第3张图片
参数解释:GroupId:组织名,通常是用公司域名 ArtifactId为项目名 Version:版本 具体更详细的请看《maven实战》

第二步:pom.xml



    4.0.0

    com.huhst
    Producer
    1.0-SNAPSHOT


    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.3.RELEASE
    

    
        
        1.8
    

    
        
        
            org.projectlombok
            lombok
        

        
        
            mysql
            mysql-connector-java
        

        
        
            tk.mybatis
            mapper-spring-boot-starter
            2.0.3
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

第三步:application.yaml

springboot的目的就是简化项目的配置,默认springboot去读resource下的application开头的文件,不过底层实际上仍然是.xml或者是注解形式的配置。

参数简单解释:

port:springboot自带tomcat,用来指定端口

username,password,url,driver-class-name:这四个参数为配置mysql连接,功能与以前的jdbc.properties一致

hikari:连接池,springboot默认支持,有兴趣可以百度下,效率是c3p0的很多倍

mybatis:Mybatis配置

logging:日志

server:
  port: 8088
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://127.0.0.1:3306/huhst
    driver-class-name: com.mysql.jdbc.Driver
    hikari:
      idle-timeout: 60000
      maximum-pool-size: 30
      minimum-idle: 10
mybatis:
  #  type-aliases-package: com.huhst.dto
  mapper-locations: classpath:mapper/*.xml
logging:
  level:
    com.huhst: debug

第四步:实体类

实体类 User

注解简单解释:

@Data 是来自于lombok的注解 加上它就不用再手动生成get set方法了

@Table 是来自import javax.persistence.Table;的注解,指定实体类User和t_user相互关联

@Id 是来自import javax.persistence.Table;的注解 标识这是主键

@KeySql(useGeneratedKeys = true) 是来自lombok的注解,表示是主键自增长

@Data
@Table(name = "t_user")
public class User {
    @Id
    @KeySql(useGeneratedKeys = true)
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String sex;
    private Date birthday;
    private Date createDate;
    private Date updateDate;
    private String note;

}

第五步:接口

可以看见这有两个mapper,@Mapper是来自于Mabatis的注解

而继承的tk.mybatis.mapper.common.Mapper是通用mapper,里面已经包含了常见的crud方法

@Mapper
public interface UserMapper extends tk.mybatis.mapper.common.Mapper {
}

第六步:service接口

public interface UserService {
    /**
     * 插入用户信息
     * @param user
     * @return
     */
    public int insertUserInfo(User user);

    /**
     * 根据id查询用户信息
     * @param id
     * @return
     */
    public User queryUserInfoById(Integer id);

}

第七步:service的实现类

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public int insertUserInfo(User user) {
        return userMapper.insert(user);
    }

    @Override
    public User queryUserInfoById(Integer id) {
        return userMapper.selectByPrimaryKey(id);
    }
}

第八步:控制器

参数简单解释:默认是知道ssm的哈

@Slf4j是来自lombok的注解,有了它,我们能直接输出日志:如 log.debug(“数据查询失败!”); 记得yaml里面得先配置日志级别哦

@RestController
@Slf4j
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/api/insert")
    public Map insert(@RequestBody User user){
        HashMap map = new HashMap();

        try {
            userService.insertUserInfo(user);
            map.put("success",true);
            map.put("message","数据插入成功!");
            log.debug("数据插入成功");
            return map;
        }catch (Exception e){
            e.printStackTrace();
            log.debug("数据插入失败!");
            map.put("success",false);
            map.put("message","数据插入失败");
            return map;
        }
    }

    @RequestMapping(value = "/api/query")
    public Map queryById(@RequestBody User user){
        HashMap map = new HashMap();

        try {
            User userInfo = userService.queryUserInfoById(user.getId());
            log.debug("数据查询成功!");
            map.put("success",true);
            map.put("message","数据查询成功!");
            map.put("result",userInfo);
            return map;
        }catch (Exception e){
            e.printStackTrace();
            map.put("success",false);
            map.put("message","数据查询失败!");
            log.debug("数据查询失败!");
            return map;
        }
    }
}

第九步:启动器

值得注意的是,如果目录是和我一样的话ProducerApplication得在com.huhst包下,因为默认是扫当前包及其子包下

@SpringBootApplication
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

第十步:测试

从零开始搭建SpringBoot的Demo_第4张图片

你可能感兴趣的:(SpringBoot)