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

Mybatis-plus使用示例(含增删改查及分页查询,附源码),第1张

文章目录
  • 前言
        • 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. 具体实现
@Service
public 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地址

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/905460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存