1.首先
安装
// 引入MyBatis-Plus的依赖
// 在pom.xml中添加以下依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>{version}</version>
</dependency>
// 创建一个实体类
@Data
public class User {
private Long id;
private String name;
private Integer age;
}
// 创建一个Mapper接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
// 在application.yml中配置MyBatis-Plus的相关配置
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
type-aliases-package: com.example.entity
// 在Spring Boot的启动类中添加Mapper扫描注解
@MapperScan("com.example.mapper")
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
// 进行增删改查操作的服务类
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
// 查询所有用户
public List<User> getAllUsers() {
return userMapper.selectList(null);
}
// 根据ID查询用户
public User getUserById(Long id) {
return userMapper.selectById(id);
}
// 新增用户
public void addUser(User user) {
userMapper.insert(user);
}
// 删除用户
public void deleteUser(Long id) {
userMapper.deleteById(id);
}
// 更新用户信息
public void updateUser(User user) {
userMapper.updateById(user);
}
}
以上示例展示了如何使用MyBatis-Plus进行基本的增删改查操作。
首先,需要引入MyBatis-Plus的依赖,并创建一个实体类。
然后,创建一个Mapper接口,继承MyBatis-Plus提供的BaseMapper接口,以便拥有基本的增删改查方法。
在Spring Boot的启动类中,需要添加Mapper扫描注解来自动扫描Mapper接口。
最后,在服务类中注入UserMapper,并编写具体的增删改查方法。
通过这些方法,可以对数据库中的用户表进行操作。
下面是AbstractWrapper
allEq
全部eq(或个别isNull)
allEq(Map<R, V> params)
allEq(Map<R, V> params, boolean null2IsNull)
allEq(boolean condition, Map<R, V> params, boolean null2IsNull)
eq 等于 =
eq(R column, Object val)
eq(boolean condition, R column, Object val)
ne 不等于 <>
ne(R column, Object val)
ne(boolean condition, R column, Object val)
gt大于 >
gt(R column, Object val)
gt(boolean condition, R column, Object val)
ge
大于等于 >=
ge(R column, Object val)
ge(boolean condition, R column, Object val)
lt 小于 <
lt(R column, Object val)
lt(boolean condition, R column, Object val)
le 小于等于 <=
le(R column, Object val)
le(boolean condition, R column, Object val)
between BETWEEN 值1 AND 值2
between(R column, Object val1, Object val2)
between(boolean condition, R column, Object val1, Object val2)
notBetween NOT BETWEEN 值1 AND 值2
notBetween(R column, Object val1, Object val2)
notBetween(boolean condition, R column, Object val1, Object val2)
like LIKE '%值%'
like(R column, Object val)
like(boolean condition, R column, Object val)
notLike
NOT LIKE '%值%'
例: notLike("name", "王")--->name not like '%王%'
likeLeft
LIKE '%值'
例: likeLeft("name", "王")--->name like '%王'
likeRight
LIKE '值%'
例: likeRight("name", "王")--->name like '王%'
notLikeLeft
NOT LIKE '%值'
例: notLikeLeft("name", "王")--->name not like '%王'
notLikeRight
NOT LIKE '值%'
例: notLikeRight("name", "王")--->name not like '王%'
isNull
字段 IS NULL
例: isNull("name")--->name is null
isNotNull
字段 IS NOT NULL
例: isNotNull("name")--->name is not null
in
字段 IN (value.get(0), value.get(1), ...)
例: in("age",{1,2,3})--->age in (1,2,3)
notIn
字段 NOT IN (value.get(0), value.get(1), ...)
例: notIn("age",{1,2,3})--->age not in (1,2,3)
inSql
字段 IN ( sql语句 )
例: inSql("age", "1,2,3,4,5,6")--->age in (1,2,3,4,5,6)
例: inSql("id", "select id from table where id < 3")--->id in (select id from table where id < 3)
notInSql
字段 NOT IN ( sql语句 )
例: notInSql("age", "1,2,3,4,5,6")--->age not in (1,2,3,4,5,6)
例: notInSql("id", "select id from table where id < 3")--->id not in (select id from table where id < 3)
groupBy
分组:GROUP BY 字段, ...
例: groupBy("id", "name")--->group by id,name
orderByAsc
orderByAsc(R... columns)
orderByAsc(boolean condition, R... columns)
排序:ORDER BY 字段, ... ASC
例: orderByAsc("id", "name")--->order by id ASC,name ASC
orderByDesc
排序:ORDER BY 字段, ... DESC
例: orderByDesc("id", "name")--->order by id DESC,name DESC
orderBy
排序:ORDER BY 字段, ...
例: orderBy(true, true, "id", "name")--->order by id ASC,name ASC
having
HAVING ( sql语句 )
例: having("sum(age) > 10")--->having sum(age) > 10
例: having("sum(age) > {0}", 11)--->having sum(age) > 11
func
func 方法(主要方便在出现if...else下调用不同方法能不断链)
例: func(i -> if(true) {i.eq("id", 1)} else {i.ne("id", 1)})
or
or()
or(boolean condition)
拼接 OR
例: eq("id",1).or().eq("name","老王")--->id = 1 or name = '老王'
or(Consumer<Param> consumer)
or(boolean condition, Consumer<Param> consumer)
OR 嵌套
例: or(i -> i.eq("name", "李白").ne("status", "活着"))--->or (name = '李白' and status <> '活着')
and
AND 嵌套
例: and(i -> i.eq("name", "李白").ne("status", "活着"))--->and (name = '李白' and status <> '活着')
nested
正常嵌套 不带 AND 或者 OR
例: nested(i -> i.eq("name", "李白").ne("status", "活着"))--->(name = '李白' and status <> '活着')