第一步
首先我们先再pom.xml里面添加上我们的mybatis依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
第二步
首先我们需要一个实体类也就是我们的User
package com.example.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
public class User implements Serializable {
/**
* 用户ID
*/
@TableId(value = "uid", type = IdType.AUTO)
private Long uId;
/**
* 年龄
*/
private Integer Age;
/**
* 邮箱
*/
private String Email;
public Long getuId() {
return uId;
}
public void setuId(Long uId) {
this.uId = uId;
}
public Integer getAge() {
return Age;
}
public void setAge(Integer age) {
Age = age;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
}
有了实体类,接下来我们就可以使用 MyBatis-Plus的自动生成了,这里我们就不教了,
然后就开始我们的SQL
分为几种,第一种就是我们的MyBatis-Plus的里面自带的SQL接口封装了 增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT) 操作,无需手写 SQL
增(INSERT)
User user = new User();
user.setName("张三");
user.setAge(25);
user.setEmail("zhangsan@example.com");
int result = userMapper.insert(user);
System.out.println("插入成功,受影响行数:" + result);
里面的userMapper是我通过我们MyBatis自动生成的里面
public interface UserMapper extends BaseMapper<User> { }
特点:
insert()
方法自动插入主键 ID(如果 ID 为空,MP 会自动生成)。@TableId(type = IdType.AUTO)
配置主键策略。-
删(DELETE)
1:按 ID 删除
int result = userMapper.deleteById(1);
System.out.println("删除成功,受影响行数:" + result);
一般都项目都不是直接删除数据库的数据都是数据库里面有一个id控制他的显示,也就是状态码
所以说这个删除一般很少使用到的,都是update,根据条件修改状态码,这个一般都是看你们的项目,是需要真删除还是假删除。
2:条件删除
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "张三");
int result = userMapper.delete(wrapper);
System.out.println("删除成功,受影响行数:" + result);
3:批量删除
int result = userMapper.deleteBatchIds(Arrays.asList(1, 2, 3));
System.out.println("批量删除成功,受影响行数:" + result);
改(UPDATE)
1:按 ID 更新
User user = new User();
user.setId(1);
user.setEmail("newemail@example.com");
int result = userMapper.updateById(user);
System.out.println("更新成功,受影响行数:" + result);
上面说到的假删除也就是通过这种方式,列如:
User user = new User();
user.setId(1); //用户id
user.setStatus(1);//状态码(0正常1删除)
int result = userMapper.updateById(user);
System.out.println("更新成功,受影响行数:" + result);
上面使用说到的0和1是通过你数据库设计控制的,
2:条件更新
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.eq("name", "张三").set("email", "newemail@example.com");
int result = userMapper.update(null, wrapper);
System.out.println("更新成功,受影响行数:" + result);
查(SELECT)
按 ID 查询
User user = userMapper.selectById(1);
System.out.println(user);
2:查询所有
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
3:条件查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.ge("age", 20).like("name", "张");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
3:批量查询
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
users.forEach(System.out::println);
如果默认 CRUD 不够用,可以自定义 SQL:
自定义 SQL
在UserMapper.java里面添加,你需要的SQL接口,就比如一下很复杂的接口,我下面这个是给你一个思路
List<User> getUsersByAge( int age);
然后去到 resources---》mapper---》UserMapper.xml
里面添加上,你需要的SQL语句
<select id="getUsersByAge" resultMap="BaseResultMap">
select count(1) from User m
<where>
<if test="age != null">
m.age = #{age}
</if>
</where>
</select>
自定义SQL的话复杂的,就需要考验你的SQL语句能力了