新建一个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加入如下的依赖
用法看这里:SpringBoot——基于SpringBoot整合Mybatis的入门案例+sql提示配置+lombok工具包介绍_北岭山脚鼠鼠的博客-CSDN博客
SpringBoot——SB整合mybatis案例(残缺版本)第一集_北岭山脚鼠鼠的博客-CSDN博客
org.projectlombok
lombok
true
准备各层的包文件夹如下
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);
}
}
到这里一个基本的项目模板就已经基本完成了
先准备一个数据库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对象后调用对应方法实现操作
@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);
}
}
这一层将调用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;
}
}
这里对于要放进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);
}
发送查询请求得到一个Result格式的响应数据
控制台输出
发送添加请求得到一个Result格式的响应数据
控制台输出如下
在数据库表当中的数据
结束,上面就是一个通用模板的创建使用,以后有了通用的东西再加