Springboot整合Mybatis-Plus
1.引入依赖
在工程的pom文件中添加如下代码,加载Mybatis-Plus、mysql的依赖项
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
2.编写配置文件
在application.properties配置文件里面配置mysql的连接信息
#配置mysql数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/kslobn?userUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
在spring boot启动类中添加@MapperScan注解,扫描Mapper文件夹:
3.编写实体类
在Mapper包里面创建接口AdminMapper并实现BaseMapper。
在此我们的CRUD功能已经全部实现,不用像以前那样编写麻烦的mybatis的映射文件。
4.测试
我们先引入mybatis的日志,方便我们查看CRUD的效果。在application文件里面加入以下代码。
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
在springbootTest里面编写测试代码:
@SpringBootTest
class KslobnApplicationTests {
@Autowired
AdminMapper adminMapper;
@Test
void contextLoads() {
Admin a=new Admin();
a.setAdmin_id(111);
a.setAdminname("mkbk");
a.setAdminpwd("123");
int insert=adminMapper.insert(a);
System.out.println(insert);
}
}
结果如下:可见我们插入成功了。
更新操作
//更新操作
Admin admin=new Admin();
admin.setAdmin_id(111);
admin.setAdminpwd("mkbk");
admin.setAdminpwd("111");
int update=adminMapper.updateById(admin);
System.out.println(update);
需要注意的是如果你的主键名字不是id的话可能会报:BindingException: Invalid bound statement (not found): com.lobn.kslobn.mapper.AdminMapper.updateById
原因是mybatis-plus默认的主键名字是id,解决办法,在你的实体类里面声明主键。
查询操作:
单个查询:
//单个查询
Admin admin;
admin=adminMapper.selectById(111);
System.out.println(admin);
多个查询:
//查询多个
ArrayList<Admin> adminList=new ArrayList<Admin>();
adminList= (ArrayList<Admin>) adminMapper.selectBatchIds(Arrays.asList(111,11106,11104));
for (Admin a:adminList) {
System.out.println(a);
}
条件查询:
//条件查询
HashMap<String ,Object> hashMap=new HashMap<>();
hashMap.put("adminname","mkbk");
hashMap.put("adminpwd","111");
ArrayList<Admin> adminArrayList= (ArrayList<Admin>) adminMapper.selectByMap(hashMap);
for(Admin admin:adminArrayList)
{
System.out.println(admin);
}
5.分页查询
如何使用MyBatisPlus内页插件?
//分页查询
Page<Admin> page=new Page<>(1,4);
adminMapper.selectPage(page,null);
for (Admin a:page.getRecords()
) {
System.out.println(a);
}
//page的其他方法
System.out.println("当前页:" + page.getCurrent());
System.out.println("总页数:" + page.getPages());
System.out.println("记录数:" + page.getTotal());
System.out.println("是否有上一页:" + page.hasPrevious());
System.out.println("是否有下一页:" + page.hasNext());
6.条件构造器
Wrapper,可以构造复杂SQL。
测试:查询admin_id不为空的记录
//复杂sql查询
QueryWrapper<Admin> adminQueryWrapper=new QueryWrapper<>();
adminQueryWrapper.isNotNull("admin_id");
ArrayList<Admin> adminArrayList= (ArrayList<Admin>) adminMapper.selectList(adminQueryWrapper);
for (Admin a:adminArrayList
) {
System.out.println(a);
}
-
条件查询:
eq
:等于条件。ne
:不等于条件。gt
:大于条件。ge
:大于等于条件。lt
:小于条件。le
:小于等于条件。between
:在两个值之间。notBetween
:不在两个值之间。like
:模糊查询。notLike
:不匹配模糊查询。likeLeft
:左模糊查询。likeRight
:右模糊查询。
-
逻辑查询:
or
:或者条件。and
:并且条件。nested
:嵌套条件。
-
排序:
orderByAsc
:根据指定字段升序排序。orderByDesc
:根据指定字段降序排序。
-
分组和聚合:
groupBy
:分组。having
:分组后的条件。select
:选择字段,可以用于聚合函数,如count
,sum
,avg
,max
,min
。
-
连表查询:
leftJoin
:左连接。rightJoin
:右连接。innerJoin
:内连接。
-
自定义 SQL:
apply
:用于拼接自定义 SQL 语句。
-
分页:
last
: limit 语句,用于分页。
-
实体类条件查询:
allEq
:基于实体类字段的等值条件。
-
条件组合:
or
:或者条件。and
:并且条件。nested
:嵌套条件。
-
批量操作:
in
:在某个集合中。notIn
:不在某个集合中。
-
其他操作:
exists
:存在。notExists
:不存在。isNull
:字段为空。isNotNull
:字段不为空。
原文地址:https://blog.csdn.net/weixin_63553716/article/details/138656913
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!