1.导入相关依赖
这里使用的是springboot3.2.8,对于3.x版本需要导入新的对于mp的依赖(3.1.6也支持旧的mybaitsplus依赖),千万注意版本冲突,不然根本运行不了
<!-- 数据库相关依赖(开始) -->
<!-- 阿里数据源驱动 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!-- MyBatis-Plus 启动 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version>
</dependency>
<!-- 引入mysql驱动-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- 数据库相关依赖() -->
旧的mp依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.7</version>
</dependency>
2.编写数据库的相关配置
在application.yml文件加入以下这些,这里数据源用的是druid,
mp的日志可以选择是否打开,以及可以关闭图标等等
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/myuser
username: root
password: a
type: com.alibaba.druid.pool.DruidDataSource
#关闭spring的图标
main:
banner-mode:
#设置打开mybatis-plus的日志
mybatis-plus:
# 开启日志: mp
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#关闭mp的图标
global-config:
banner: false
3.编写实体类
这里面的id要指定为主键且自增,类名要与数据库表名对应,属性名也一样,如果名字不对应也可以加上@TableName注解来指定表名,@TableField指定属性名
@Data
public class User {
@TableId(value = "id", type = IdType.AUTO)
Long id;
String name;
String pwd;
public User(long id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public User() {
}
}
4.编写dao层的接口
就继承一个类如何泛型写上刚刚写的实体类就完成了基础的crud操作,接下来可以在测试中调用各种api
@Mapper
public interface UserDao extends BaseMapper<User> {}
5.测试
@SpringBootTest
class UserTest {
@Autowired
UserDao userDao;
@Test
public void testUser1(){
List<User> users = userDao.selectList(null);
System.out.println(users);
}
/**
* 增加用户
* 注意多次增加要重新创建对象,否则会报错
*/
@Test
public void addUser(){
User user = new User();
user.setName("jxq");
user.setPwd("20050101");
userDao.insert(user);
}
/**
* 更新数据根据id
* 直接设置一个对象,如果有数据则修改,没用数据则不作修改
*/
@Test
public void updateUser(){
User user = new User();
user.setId(3l);
user.setName("xhc");
user.setPwd("000000");
userDao.updateById(user);
}
/**
* 删除数据根据id
*/
@Test
public void deleteUser(){
userDao.deleteById(15);
}
/**
* 分页查询
*/
@Test
public void pageUser(){
// Page page = new Page(1,5);
Page page = userDao.selectPage(new Page(2,4), null);
System.out.println("总共有几条数据"+page.getTotal());
System.out.println("获取到的数据"+page.getRecords());
System.out.println("总页数"+page.getPages());
System.out.println("当前页数"+page.getCurrent());
System.out.println("每页显示的条数"+page.getSize());
}
/**
* 条件查询
*/
@Test
public void wrapperUser(){
LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
// 条件查询,id小于10,大于5
qw.lt(User::getId,10);
qw.gt(User::getId,5);
List<User> users = userDao.selectList(qw);
System.out.println(users);
}
@Test
public void SqlUser(){
List<User> users = userDao.selectSome();
System.out.println(users);
}
@Test
public void nullUser(){
User user = new User();
// user.setId(5l);
LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
//如果id不为空则加入这个条件否则不加入
qw.gt(user.getId()!=null,User::getId,user.getId());
List<User> users = userDao.selectList(qw);
System.out.println(users);
}
@Test
public void testUser2(){
}
}