这里是我以后用到的项目都要先创建的模板
第一步
新建一个springboot项目,这里jdk版本和java版本根据需求选择

第二步
——选择springboot版本和他提供的可以选择安装的依赖
这里因为是开发web项目,所以选择一个spring web
同时因为还要用到mysql,要一个mysql驱动,和一个mybatis框架简化开发

第三步
完成数据库的相关配置
在配置文件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
添加两个有用的插件(貌似也没有用到)
第四步
在pom.xml加入如下的依赖
lombok的依赖(日志)
用法看这里:SpringBoot——基于SpringBoot整合Mybatis的入门案例+sql提示配置+lombok工具包介绍_北岭山脚鼠鼠的博客-CSDN博客
SpringBoot——SB整合mybatis案例(残缺版本)第一集_北岭山脚鼠鼠的博客-CSDN博客
  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>第五步
准备各层的包文件夹如下
resources中的目录结构是为XML开发准备(没有用到)
 
 
第六步
规定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格式的响应数据

控制台输出

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

控制台输出如下

在数据库表当中的数据
 
 
结束,上面就是一个通用模板的创建使用,以后有了通用的东西再加






![[架构之路-158]-《软考-系统分析师》-10-系统分析-1-5-逻辑设计、逻辑模型(系统分析师的主要职责之一)](https://img-blog.csdnimg.cn/40864fe2027c417eb8472566fd4429a4.png)












