mybatis Plus

1 微服务搭建
1). pom.xml

mysql
mysql-connector-java

com.tensquare tensquare_common 1.0-SNAPSHOT com.baomidou mybatisplus-spring-boot-starter ${mybatisplus-spring-boot-starter.version} com.baomidou mybatis-plus ${mybatisplus.version}

2). application.yml
server:
port: 9004 # 服务访问端口号
spring:
application:
name: tensquare-article #服务名称
datasource: # 数据库连接四大属性
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.192.164:3306/tensquare_article?characterEncoding=utf-8
username: root
password: root

Mybatis-Plus 配置

mybatis-plus:
#mapper-locations: classpath:/mapper/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.tensquare.article.pojo
global-config:
id-type: 1 #0:数据库ID自增 1:用户输入id
db-column-underline: false
refresh-mapper: true
configuration:
map-underscore-to-camel-case: true
cache-enabled: true #配置的缓存的全局开关
lazyLoadingEnabled: true #延时加载的开关
multipleResultSetsEnabled: true #开启延时加载,否则按需加载属性
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用

3). 引导类
@SpringBootApplication
@MapperScan(“com.tensquare.article.dao”)
public class ArticleApplication {
public static void main(String[] args) {
SpringApplication.run(ArticleApplication.class, args);
}
}

4). Mapper接口
public interface ArticleDao extends BaseMapper

{
}

5). 实体类
@TableName(“tb_article”)
public class Article implements Serializable {
@TableId(type = IdType.INPUT)
private String id;//ID
}

**MyBatis Plus: **
Mybatis Plus是对Mybatis框架的二级封装和拓展 , 完全继承原生的Mybatis , 并且在其基础上进行拓展 ;
使用Mybatis Plus进行开发,基本的CRUD操作已经提供了, 程序员不需要手动的编写接口方法及映射配置文件 , 采用直接面向对象的方式操作 ;
学习资料 :
https://mp.baomidou.com/guide/
https://search.gitee.com/?skin=rec&type=repository&q=Mybatis Plus

2.接口调用:
2.1 查询所有
Service:
public List

findAll() {
return articleDao.selectList(null);
}

controller :
@RequestMapping(method = RequestMethod.GET) //@GetMapping
public Result findAll() {
List

list = articleService.findAll();
return new Result(true, StatusCode.OK, “查询成功”, list);
}

2.2 根据ID查询
controller:
// @RequestMapping(value = “{articleId}”, method = RequestMethod.GET)
@GetMapping("/{articleId}")
public Result findById(@PathVariable String articleId) {
Article article = articleService.findById(articleId);
return new Result(true, StatusCode.OK, “查询成功”, article);
}

service
public Article findById(String articleId) {
return articleDao.selectById(articleId);
}

2.3 新增
service
public void save(Article article) {
//使用分布式id生成器
String id = idWorker.nextId() + “”;
article.setId(id);
//初始化数据
article.setVisits(0); //浏览量
article.setThumbup(0); //点赞数
article.setComment(0); //评论数
//新增
articleDao.insert(article);
}

controller
@RequestMapping(method = RequestMethod.POST)//@PostMapping
public Result save(@RequestBody Article article) {
articleService.save(article);
return new Result(true, StatusCode.OK, “新增成功”);
}
在这里插入图片描述

insert : 插入数据 ; 插入不为null的字段 ;
insertAllColumn : 插入数据 ; 插入所有字段 ;

2.4 修改
1). 根据主键更新
articleDao.updateById(article);

2). 根据条件更新
EntityWrapper wrapper = new EntityWrapper();
wrapper.eq(“id”,article.getId);
articleDao.update(article , wrapper);

在这里插入图片描述
2.5 删除
articleDao.deleteById(articleId);

其他删除方式:
在这里插入图片描述
2.6 复杂查询
需求 : 条件查询 , 分页查询
1). 配置分页插件
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor createPaginationInterceptor() {
return new PaginationInterceptor();
}
}

2). Controller
@RequestMapping(value = “search/{page}/{size}”, method = RequestMethod.POST)
public Result findByPage(@PathVariable Integer page,
@PathVariable Integer size,
@RequestBody Map<String, Object> map) {
//根据条件分页查询
Page

pageData = articleService.findByPage(map, page, size);
//封装分页返回对象
PageResult
pageResult = new PageResult<>(
pageData.getTotal(), pageData.getRecords()
);
//返回数据
return new Result(true, StatusCode.OK, “查询成功”, pageResult);
}

3). Service
public Page

findByPage(Map<String, Object> map, Integer page, Integer size) {
//设置查询条件
EntityWrapper
wrapper = new EntityWrapper<>();
Set keySet = map.keySet();
for (String key : keySet) {
//第一个参数是否把后面的条件加入到查询条件中
//和上面的if判断的写法是一样的效果,实现动态sql
wrapper.eq(map.get(key) != null, key, map.get(key));
}

//设置分页参数
Page<Article> pageData = new Page<>(page, size);

//执行查询
//第一个是分页参数,第二个是查询条件
List<Article> list = articleDao.selectPage(pageData, wrapper);
pageData.setRecords(list);
//返回
return pageData;

}

Page对象 : 组装分页条件 ;
EntityWrapper : 组装查询条件 ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值