SpingBoot——SB整合MB的web项目模板

这里是我以后用到的项目都要先创建的模板

第一步

新建一个springboot项目,这里jdk版本和java版本根据需求选择

SpingBoot——SB整合MB的web项目模板_第1张图片

第二步

——选择springboot版本和他提供的可以选择安装的依赖

这里因为是开发web项目,所以选择一个spring web

同时因为还要用到mysql,要一个mysql驱动,和一个mybatis框架简化开发

SpingBoot——SB整合MB的web项目模板_第2张图片

第三步 

完成数据库的相关配置

在配置文件application.properties当中完成和数据库连接的相关配置,可以先创建数据库也可以后面创建


#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/test1
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234

开启驼峰命名法(这里没有用到)

mybatis.configuration.map-underscore-to-camel-case=true

添加两个有用的插件(貌似也没有用到)

 SpingBoot——SB整合MB的web项目模板_第3张图片

第四步

在pom.xml加入如下的依赖

lombok的依赖(日志)

用法看这里:SpringBoot——基于SpringBoot整合Mybatis的入门案例+sql提示配置+lombok工具包介绍_北岭山脚鼠鼠的博客-CSDN博客

SpringBoot——SB整合mybatis案例(残缺版本)第一集_北岭山脚鼠鼠的博客-CSDN博客

  
            org.projectlombok
            lombok
            true
        

第五步

准备各层的包文件夹如下

resources中的目录结构是为XML开发准备(没有用到)

SpingBoot——SB整合MB的web项目模板_第4张图片 

第六步

规定Result风格,所有的响应数据都必须规定使用Result风格的数据来响应

做法为在pojo中增加如下的一个实体类Result,该类有三种属性,一个是请求成功与否,第二个是请求的执行状态,最后一个是请求返回的数据。这里三个属性需要构造setter和getter方法还有有参和无参构造方法。

用到的三个注解就是来自上面依赖里引入的lombok。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应信息 描述字符串
    private Object data; //返回的数据

    //增删改 成功响应
    public static Result success(){
        return new Result(1,"success",null);
    }
    //查询 成功响应
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    //失败响应
    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}

到这里一个基本的项目模板就已经基本完成了

现在演示实现一个根据id的查询功能和插入功能

准备工作:

先准备一个数据库test1和该数据库下的一个users表,使用如下的建表语句

create database test1;

drop table users;
create table `users`(
    `id` int unsigned not null auto_increment primary key comment '主键ID',
    `name` varchar(100) COLLATE utf8mb3_bin default null comment '姓名',
    `age` tinyint unsigned default  null comment '年龄',
    `create_time` datetime not null comment '用户创建时间'
)auto_increment=1 DEFAULT CHARSET=utf8mb3 comment ='用户表';

insert into users(name,age,create_time) values('YhY',15,'2023-03-24 17:33:10');
insert into users(name,age,create_time) values('杨辉',50,'2023-04-12 18:33:10');

select * from users;

上面auto_increment是让主键id自动递增, auto_increment=1是主键从1开始递增,默认就是1

COLLATE utf8mb3_bin是让name区分大小写,下面 DEFAULT CHARSET=utf8mb3是设定该表的字符集编码为utf8mb3

有了数据库表之后就要有一个对应的实体类

在pojo层当中新建如下的Users类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Users {
    private Integer id;
    private String name;
    private Integer age;
    private LocalDateTime createTime;
}

每一层之间关系如下

controller——>service——>mapper,前一个获取后一个的bean对象后调用对应方法实现操作

在Controller当中如下所示

@RestController是ResponseBody和Controller的结合,可以返回一个json格式的数据,如果单单使用Controller的话是只返回一个视图

@RequestMapping指定了该类中的所有资源的访问路径必须以/users开头

@Slf4j是为了在下面使用日志记录相关信息,这个是上面lombok的注解。

每一个资源的返回值都要按照Result规范来

下面有使用注解指定了两种请求——Post请求和Get请求,Post请求的参数,

post请求的参数都在请求体里面,这里要在方法形参前面加上一个@RequestBody注解去获取

get请求的参数都在url当中,用另外一个注解@PathVariable去获取

@Slf4j
@RestController
@RequestMapping("/users")
public class UsersController {

    @Autowired
    private UsersService usersService;

    @PostMapping
    public Result add(@RequestBody Users users)
    {
        log.info("新增用户: {}",users);
        usersService.add(users);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
log.info("根据ID查询用户id:{}",id);
Users users=usersService.getById(id);
log.info("查询到的员工信息:{}",users);
return Result.success(users);
    }
}

在Service层当中如下所示

这一层将调用mapper当中的映射接口实现对应功能

这里的添加新用户时需要有一个添加时间,直接调用LocalDateTime的now()方法获取当前时间设置在users里面然后再传进Mapper层当中。

@Service
public class UsersServiceImpl implements UsersService {
    @Autowired
    private UsersMapper usersMapper;

    @Override
    public void add(Users users) {
        users.setCreateTime(LocalDateTime.now());
        usersMapper.insert(users);
    }

    @Override
    public Users getById(Integer id) {
       Users users=usersMapper.getById(id);
        return users;
    }
}

在Mapper层如下所示

这里对于要放进sql语句当中的数值要使用一个#{}参数占位符,传进来的是一个实体类会自动去匹配类当中的属性,传进来一个属性就匹配属性名称。

这里还没有展示开启驼峰命名法的作用。

@Mapper
public interface UsersMapper {
@Insert("insert into users(name,age,create_time) values(#{name},#{age},#{createTime})")
     void insert(Users users);

@Select("select * from users where id = #{id}")
    Users getById(Integer id);
}

使用postman测试如下

发送查询请求得到一个Result格式的响应数据

SpingBoot——SB整合MB的web项目模板_第5张图片

控制台输出

 发送添加请求得到一个Result格式的响应数据

SpingBoot——SB整合MB的web项目模板_第6张图片

控制台输出如下

在数据库表当中的数据 

SpingBoot——SB整合MB的web项目模板_第7张图片 

结束,上面就是一个通用模板的创建使用,以后有了通用的东西再加

你可能感兴趣的:(Spring,java,开发语言,spring,boot,mybatis,mysql)