> 文档中心 > Springboot实战:Mybatis-plus使用示例(含增删改查及分页查询,附源码)

Springboot实战:Mybatis-plus使用示例(含增删改查及分页查询,附源码)

文章目录

  • 前言
        • 1. 数据库表结构
        • 2. 接口介绍
        • 3. 具体实现
        • 4. 代码生成器
        • 4. 完整代码

使用本教程代码前,请参考Mybatis-puls官网并正确配置mybatis-plus开发环境

前言

首先需要根据官网配置代码生成器(本教程结尾有提供),生成代码模板,或自己手动配置
本博客项目源码地址

  • 项目源码github地址
  • 项目源码国内gitee地址

1. 数据库表结构

sql文件结尾有提供

@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)public class User extends Model<User> {    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;    }}

2. 接口介绍

以查询用户为例子

public interface IUserService extends IService<User> {    /**     * 添加用户     *     * @param user 用户数据     * @return b     */    boolean addUser(User user);    /**     * 删除用户     *     * @param userId 用户id     * @return b     */    boolean delUserById(Long userId);    /**     * 删除用户,其它条件     *     * @param account 用户账号     * @return b     */    boolean delUser(String account);    /**     * 更新用户     *     * @param user 用户数据     * @return b     */    boolean updUser(User user);    /**     * 查询用户     *     * @param user 查询用户     * @return b     */    List<User> listUser(User user);    /**     * 分页查询用户     *     * @param user     查询用户的条件     * @param pageNum  页码     * @param pageSize 页大小     * @return b     */    PageInfo<User> listUserPage(User user, Integer pageNum, Integer pageSize);}

3. 具体实现

@Servicepublic class UserServiceImpl extends ServiceImpl<UserMapper, User> 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<User> eq = new QueryWrapper<User>()  // 添加删除条件  .eq("account", account); return this.remove(eq);    }    @Override    public boolean updUser(User user) { StrUtil.isNotBlank(user.getPassword()); UpdateWrapper<User> set = new UpdateWrapper<User>()  .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<User> listUser(User user) { QueryWrapper<User> eq = new QueryWrapper<User>()  // 当用户名不为空,该条件生效,执行模糊查询  .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<User> listUserPage(User user, Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); List<User> users = this.listUser(user); return new PageInfo<>(users);    }}

4. 代码生成器

/** * 配置参考 : https://baomidou.com/guide/generator.html * * @author: qiDing * date: 2020/6/4 0004 14:56 * description: TODO */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";    /**     * db 账号     */    private static final String USERNAME = "root";    /**     * db 密码     */    private static final String PASSWORD = "123456";    /**     * db 驱动     */    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<TableFill> 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地址

家庭教育网