关于MybatisPlus
正常编写数据库表的crud接口流程:编写实体类->编写Controller类->编写Service接口和类->编写DAO类->编写XML文件
而MybatisPlus已经封装好了⼀些crud方法,不需要再写xml了,直接调用这些方法就行,类似JPA但优于JPA
整合MybatisPlus+Lombok
添加依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis plus和springboot整合-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
数据库脚本及配置
脚本
CREATE TABLE `banner` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`img` varchar(524) DEFAULT NULL COMMENT '图片',
`url` varchar(524) DEFAULT NULL COMMENT '跳转地址',
`weight` int(11) DEFAULT NULL COMMENT '权重',
`version` int(11) DEFAULT '1',
`deleted` int(11) DEFAULT '0' COMMENT '0是未删除,1是已经删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
配置文件
server.port=8080
#==============================数据库相关配置========================================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xdclass?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username =root
spring.datasource.password =root
#配置mybatis plus打印sql⽇志
mybatis-plus.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl
MybatisPlus实现的第一个接口
controller类
@RestController
@RequestMapping("api/v1/banner")
public class BannerController {
@Autowired
private BannerService bannerService;
@RequestMapping("list")
public JsonData list(){
List<BannerDO> list = bannerService.list();
return JsonData.buildSuccess(list);
}
}
model类
@Data
@TableName("banner")//表名映射
public class BannerDO {
private Integer id;
private String img;
private String url;
private Integer weight;
}
@TableName
:映射数据库表名
service接口及实现类
public interface BannerService {
List<BannerDO> list();
}
@Service
public class BannerServiceImpl implements BannerService {
@Autowired
private BannerMapper bannerMapper;
@Override
public List<BannerDO> list() {
return bannerMapper.selectList(new QueryWrapper<>());
}
}
mapper接口
public interface BannerMapper extends BaseMapper<BannerDO> {
}
工具类
@Data
/**
* 会生成一个包含所有变量
*/
@AllArgsConstructor
/**
* 生成一个无参数的构造方法
*/
@NoArgsConstructor
public class JsonData {
/**
* 状态码 0 表示成功,1表示处理中,-1表示失败
*/
private Integer code;
/**
* 数据
*/
private Object data;
/**
* 描述
*/
private String msg;
/**
* 成功,传入数据
* @return
*/
public static JsonData buildSuccess() {
return new JsonData(0, null, null);
}
/**
* 成功,传入数据
* @param data
* @return
*/
public static JsonData buildSuccess(Object data) {
return new JsonData(0, data, null);
}
/**
* 失败,传入描述信息
* @param msg
* @return
*/
public static JsonData buildError(String msg) {
return new JsonData(-1, null, msg);
}
/**
* 失败,传入描述信息,状态码
* @param msg
* @param code
* @return
*/
public static JsonData buildError(String msg, Integer code) {
return new JsonData(code, null, msg);
}
}
要点:
- mapper接口需要继承
BaseMapper<T>
(T是对应model类) - service实现类调用已经封装好的方法
selectList(new QueryWrapper<>())
- 不需要写该条查询语句的xml文件
- 其他与mybatis使用相同