- 官网
https://mp.baomidou.com/
https://mp.baomidou.com/guide/quick-start.html
文章目录
- 优点
不需要通过 维护配置文件,注解等方式 写sql
,
直接用java方法查询数据
基础使用
实现基础的 crud 功能
1. Entity实体类
需要 类名与字段名 同 数据库表与字段 一一对应
如果与 类名!=表名,字段名!=列名 可以使用@TableName @TableField等注解
注意:用驼峰命名 数据库(user_name)对应实体类(userName)
@Data
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String email;
}
2. mapper类
只需要继承 BaseMapper<T>
public interface UserMapper extends BaseMapper<User> {
}
3. 用mapper 数据操作
https://mp.baomidou.com/guide/crud-interface.html#mapper-crud-接口
wrapper为条件构造器,相当于sql语句的where部分
//增 传入User对象,把这个对象写在表里
userMapper.insert(User);
//改
userMapper.update(User, Wrapper<User>);
userMapper.updateById(User);
//查
//查1条
User user = userMapper.selectById(id);
User user = userMapper.selectOne(wrapper<User>);
//查多条
List<User> userList = userMapper.selectList(wrapper<User>);
//表字段 map 查
Map<String,Object> columnMap = new HashMap<>();
columnMap.put("name","张三");
columnMap.put("age","66");
List<User> userList = userMapper.selectByMap(columnMap);
//分页查
List<User> userList = userMapper.selectPage(new Page<>(1,2),null);
//删
userMapper.deleteById(id);
userMapper.delete(wrapper<User>);
4. Service 封装 mapper
https://mp.baomidou.com/guide/crud-interface.html#service-crud-接口
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
//数据接口
}
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
//实现数据接口
}
代码生成器
以上方法类,可以使用 代码生成器 自动生成
https://mp.baomidou.com/guide/generator.html#使用教程
条件构造器 Wrapper
AbstractWrapper
用于生成 sql 的 where 条件
https://mp.baomidou.com/guide/wrapper.html#abstractwrapper
- 等于 eq
- 不等于 ne
- and
- or
- groupBy
- orderBy
User user = userMapper.selectOne(
new QueryWrapper<User>()
.eq("name", "老王")
.ne("age", "18")
.orderBy(true, true, "id", "name")
);
…
…
QueryWrapper
select时 设置查询字段
- select
User user = userMapper.selectOne(
new QueryWrapper<User>()
.select("id,name,password")
.eq("name", "老王")
);
UpdateWrapper
Update时 设置 SET 部分
- set
扩展
分页
多数据源
MybatisX 插件(1.4.16)
idea 中安装
idea 插件中搜索MybatisX,安装
在project视图 Scratches and Consoles -> Extensions -> MybatisX 可以看到 MybatisX 模板配置,
默认提供了一些模板可以直接使用
使用插件生成mode,mapper,service
- 在idea Datebase 视图 连接数据库
- 在Datebase视图 右击 要操作的表,选择
MybatisX-Generator
会弹出以下窗口, 配置生成的类方法属性
annotation
选择生成mode使用的模板
根据模板的 .meta.xml 文件生成mode.java
options
toString/hashCode/equals
mode类是否生成 toString/hashCode/equals方法Lombok
mode类 是否使用Lombok注释Actual Column
属性 使用 驼峰命名 还是 真实列名Actual Column Annotain
属性 是否使用 @TableField 注释
- template extra
生成其他文件(mapper,service)使用的模板
根据模板的 mapperInterface.ftl 文件生成mapper.java
根据模板的 mapperXml.ftl 文件生成mapper.xml
根据模板的 serviceInterface.ftl 和 serviceImpl.ftl 文件生成service
- 点击 OK,
在 项目路径/base path /base package /relativePackage /生成mode类
在 项目路径/base path /base package /mapper /生成mapper接口
在 项目路径/base path /resources /mapper /生成mapper.xml
在 项目路径/base path /base package /service /生成service方法
模板配置
插件版本升级了,用MybatisX 1.5.4 分享下他的模板配置
大概流程就是:输入 数据库表相关的参数+项目路径相关的参数,填入ftl模板文件,输出最终文件
以mybatis-plus2为例
-
数据库表相关的参数: 需要在 idea 配置 Database 配置数据源,使用时自动获取
-
生成domain路径相关的参数:要自己填
-
插件会读取
.meta.xml
文件,里面配置了要生成的文件参数(ftl模板,生成文件路径、名称、编码)
mybatis-plus2 就是生成下面4个文件+domain文件- mapperInterface.ftl
- mapperXml.ftl
- serviceImpl.ftl
- serviceInterface.ftl
-
打开ftl模板文件,发现里面有很多占位符
${xxx}
#xxx
,具体参考ftl语法
最终把对应的参数填入模板,生成文件