- 前言
- 1. 数据库表结构
- 2. 接口介绍
- 3. 具体实现
- 4. 代码生成器
- 4. 完整代码
使用本教程代码前,请参考Mybatis-puls官网并正确配置mybatis-plus开发环境
前言首先需要根据官网配置代码生成器(本教程结尾有提供),生成代码模板,或自己手动配置
本博客项目源码地址:
- 项目源码github地址
- 项目源码国内gitee地址
sql文件结尾有提供
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class User extends Model2. 接口介绍{ private static final long serialVersionUID=1L; @TableId(value = "user_id", type = IdType.AUTO) private Long userId; private String username; private String account; private String password; private Date createdDate; private Long createdBy; private Date updatedDate; private Long updatedBy; @Override protected Serializable pkVal() { return this.userId; } }
以查询用户为例子
public interface IUserService extends IService3. 具体实现{ boolean addUser(User user); boolean delUserById(Long userId); boolean delUser(String account); boolean updUser(User user); List listUser(User user); PageInfo listUserPage(User user, Integer pageNum, Integer pageSize); }
@Service public class UserServiceImpl extends ServiceImpl4. 代码生成器implements IUserService { @Override public boolean addUser(User user) { return this.save(user); } @Override public boolean delUserById(Long userId) { return this.removeById(userId); } @Override public boolean delUser(String account) { QueryWrapper eq = new QueryWrapper () // 添加删除条件 .eq("account", account); return this.remove(eq); } @Override public boolean updUser(User user) { StrUtil.isNotBlank(user.getPassword()); UpdateWrapper set = new UpdateWrapper () .eq("user_id", user.getUserId()) // 当传入的密码不为空,则更新 .set(StrUtil.isNotBlank(user.getPassword()), "password", user.getPassword()) // 当传入的用户名不为空,则更新 .set(StrUtil.isNotBlank(user.getUsername()), "username", user.getUsername()) // 更新时间 .set("updated_date", new Date()); return this.update(set); } @Override public List listUser(User user) { QueryWrapper eq = new QueryWrapper () // 当用户名不为空,该条件生效,执行模糊查询 .like(StrUtil.isNotBlank(user.getUsername()), "username", user.getUsername()) // 当用户账号不为空,该条件生效 .eq(StrUtil.isNotBlank(user.getAccount()), "account", user.getAccount()) // 根据created_date倒序排序 .orderBy(true, false, "created_date"); return this.list(eq); } @Override public PageInfo listUserPage(User user, Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); List users = this.listUser(user); return new PageInfo<>(users); } }
public class GlobalConfigs {
private static final String DB_URL = "jdbc:mysql://192.168.41.128:3306/example?useUnicode=true&useSSL=false&characterEncoding=utf8&useTimezone=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&useServerPrepStmts=true&allowMultiQueries=true";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
private static final String PACKAGE = "com.example.mybatis_generation";
private static final String[] TABLE_NAME = {"user"};
public static void main(String[] args) {
boolean fileOverride = true;
GlobalConfig config = new GlobalConfig();
String path = System.getProperty("user.dir");
config.setActiveRecord(true)
.setAuthor("qiDing")
.setOutputDir(path + "\src\main\java\")
.setBaseResultMap(true)
.setBaseColumnList(true)
.setFileOverride(fileOverride);
//****************************** resource ***************************************
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)
.setUrl(DB_URL)
.setUsername(USERNAME)
.setPassword(PASSWORD)
.setDriverName(DRIVER_NAME)
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("转换类型:" + fieldType);
//tinyint转换成Boolean
if (fieldType.toLowerCase().contains("tinyint")) {
return DbColumnType.BOOLEAN;
}
if (fieldType.toLowerCase().contains("datetime")) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
//****************************** Policy configuration ******************************************************
List tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));
tableFillList.add(new TableFill("gmt_create", FieldFill.INSERT));
tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
.setCapitalMode(true)
.setEntityLombokModel(true)
.setNaming(NamingStrategy.underline_to_camel)
.setTableFillList(tableFillList)
.setInclude(TABLE_NAME);
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(
new PackageConfig()
.setParent(PACKAGE)
.setController("controller")
.setEntity("domain")
.setMapper("dao")
.setXml("dao")
)
.setTemplate(
new TemplateConfig()
.setServiceImpl("templates/serviceImpl.java")
)
.execute();
}
}
4. 完整代码
- Springboot开发脚手架,集合各种常用框架使用案例,完善的文档,致力于让开发者快速搭建基础环境并让应用跑起来。
- 项目源码国内gitee地址
- 项目源码github地址



