Mybatis-

1.引入依赖

        <!--mybatis-plus-->
         <dependency>
           <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

2.实体类的操作

@Data //对实体类进行get及set方法,还提供了toString方法,默认为无参构造
@AllArgsConstructor   //有参构造 无参构造被取消
@NoArgsConstructor    //添加无参构造
#配置日志 日志输出在控制台
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

3.gmt_create(相当于create_time)  mgt_modified(相当于update_time)

        (1).表中添加以上两个字段
        (2).实体中添加两个属性

        

//数据的添加时间
@TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;
//数据的最后修改时间
@TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

        (3).处理自动填充,定义处理器

@Component //一定不要忘记交给spring工厂管理
public class MyMetaObjectHandler implements MetaObjectHandler {
//数据添加是: 自动填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("gmtCreate",new Date(),metaObject);
        this.setFieldValByName("gmtModified",new Date(),metaObject);
    }

//数据修改时填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("gmtModified",new Date(),metaObject);
    }
}

4..添加操作:添加时不指定id,id会自动生成        在实体类对其进行添加注解

        (1)mybatis-plus底层默认使用雪花算法进行主键的生成,保证的是全球id值唯一

@TableId(type = IdType.ID_WORKER):    默认的方式使用雪花算法生成。
@TableId(type = IdType.AUTO):         主键自增长,必须表设置id为自增长,不建议
@TableId(type = IdType.NONE):        不设置主键生成策略   
@TableId(type = IdType.INPUT):        必须手动输入主键
@TableId(type = IdType.ID_WORKER_STR):     string形式表示雪花算法
#设置主键生成策略 全局配置
mybatis-plus.global-config.db-config.id-type=id_worker

         (2)@TableId(type = IdType.UUID):      通过uuid生成主键-String类型

5.删除操作:        

        (1)物理删除: 直接删除表中的数据

//根据id删除1条数据
userMapper.deleteById(id);
//根据id批量删除
userMapper.deleteBatchIds(Arrays.asList(ids))

        (2)逻辑删除: 没有从表中删除,而是通过一个字段让它失效,查询时不进行查询。
                 作用:可以用于管理员查看删除记录,防止数据的丢失,类似于回收站。

        

1.表中添加字段: deleted int 类型  默认值0  1代表这条数据已经进行了逻辑删除  长度:1
2.实体类中添加属性:
	@TableLogic //逻辑删除字段
    private Integer deleted;
3.配置插件:
	//逻辑删除插件
    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }
4.配置文件的设置:
#设置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

 

6.修改操作:为动态sql,输什么值对什么值进行修改

//根据id修改
userMapper.updateById(user);

7.查询操作:

//null代表    QueryWrapper
1.查所有
userMapper.selectBatchIds(Arrays.asList(ids)) //多id查询
userDao.selectList(null);    //查所有
2.查单个        
userMapper.selectById(id);
3.分页查询
    //(1)配置插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
    //(2)代码
    Page<User> page = new Page<>(第几页,每页展示的条数);
    selectPage(page,null);    //对其结果可以进行遍历
4.条件查询-条件构造器
    QueryWrapper<实体类名> queryWrapper = new QueryWrapper<>();

    queryWrapper.eq("字段名","属性值");//查询姓名为xxx

    queryWrapper.isNotNull("字段名");//查询字段不为空

    queryWrapper.ge("字段名","值");//查询值大于或等于该值

    queryWrapper.between("字段名",值1,值2);//查询之间的值

    queryWrapper.like("字段名","值");//模糊查询

 8.代码自动生成器

        通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率

1.引入依赖
<!--代码生成器依赖-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
2.public class TestCode {
    public static void main(String[] args) {
//        创建一个代码自动生成器
        AutoGenerator code = new AutoGenerator();
//        配置策略
//        全局的设置
        GlobalConfig config = new GlobalConfig();
//        动态获取当前项目所在路径路径
        String projectPath = System.getProperty("user.dir");
        //生成后的代码放到哪里
        config.setOutputDir(projectPath+"/项目名/src/main/java");
//        设置作者
        config.setAuthor("2107class");
//        生成后是否自动打开资源管理器
        config.setOpen(false);
//        如果出现重名的类 是否覆盖已有的内容
        config.setFileOverride(false);
//        id的策略    根据个人意愿修改
        config.setIdType(IdType.ID_WORKER);   
//        日期的类型 实力类中使用java.util.date类型
        config.setDateType(DateType.ONLY_DATE);
//        去掉接口前面的I
        config.setServiceName("%sService");
//        全局的设置  配置给代码自动生成器对象
        code.setGlobalConfig(config);



//        数据源参数
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/数据库名");
        dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("密码");
//        将数据源的配置  配置给代码自动生成器对象
        code.setDataSource(dataSourceConfig);

//        配置包的策略
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("设置包名");
        packageConfig.setEntity("entity");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setController("controller");
        code.setPackageInfo(packageConfig);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("表名"); //要映射的表名
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);//实体类自动加lombok注解
        strategy.setLogicDeleteFieldName("deleted"); //逻辑删除字段

//        自动填充策略
        TableFill gmt_create = new TableFill("gmt_create", FieldFill.INSERT);
        TableFill gmt_modified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);

        ArrayList<TableFill> list = new ArrayList<>();
        list.add(gmt_create);
        list.add(gmt_modified);

        strategy.setTableFillList(list);


        code.setStrategy(strategy);

        code.execute();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值