spring boot+mybatis-plus+mysql

1、版本:spring boot 2.7 +mybatis-plus 3.4
2、安装mybatis-plus依赖项

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

3、表结构
在这里插入图片描述
4、项目结构
在这里插入图片描述
5、实体类

package com.example.springbootmybatisplus.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@TableName("user")
@Data
public class User {
  //对应数据库的主键(uuid,自增id,雪花算法,redis,zookper)
  @TableId(type = IdType.AUTO)
  private long id;
  private String name;
  private Integer age;
  private String email;

  //逻辑删除字段
  @TableLogic //逻辑删除注解
  private Integer deleted;

  //字段添加填充内容
  //策略
  @TableField(fill = FieldFill.INSERT)
  private LocalDateTime createTime;
  //策略
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private LocalDateTime updateTime;
}

注意:如果项目采用分层VO的话,对于处理返回前端多余字段需要加上@JsonInclude(JsonInclude.Include.NON_NULL)注解即可,那么则对于不需要的字段前端就不显示了
6、配置文件

server.port=xxxxx
#mysql连接配置,与mybatis一致
spring.datasource.url=jdbc:mysql://localhost:3306/xxxx?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=xxxxxx
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
#mybatis-plus日志配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl


# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

7、启动文件配置mapper路径

package com.example.springbootmybatisplus;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//扫描mapper文件夹
@MapperScan("com.example.springbootmybatisplus.mapper")
@SpringBootApplication
public class SpringbootmybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootmybatisplusApplication.class, args);
    }

}

8、dao层代码

package com.example.springbootmybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.pojo.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper extends BaseMapper<User> {
}

9、create_time,update_time自动生成处理器配置类

package com.example.springbootmybatisplus.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Slf4j
@Component //一定不要忘记把处理器加到IOC容器中
public class MyDataObjectHandler implements MetaObjectHandler {
    //插入时的填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill");
        //setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
        this.setFieldValByName("createTime",LocalDateTime.now(),metaObject);
        this.setFieldValByName("updateTime",LocalDateTime.now(),metaObject);
    }
    //更新时的填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill");
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

10、mybatis-plus分页插件配置类

package com.example.springbootmybatisplus.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

//@EnableTransactionManagement
@Configuration // 配置类
public class MyBatisPlusConfig {
    //分页
    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    //@Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); }
}

11、引入dao的mapper操作对象

@Autowired
    private UserMapper userMapper;

12、测试查询部分

//测试查询
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1000L);
        System.out.println(user);
    }

    @Test
    //批量查询
    public void testSelectByBatchId(){
        List<User> users = userMapper.selectBatchIds(Arrays.asList(4, 5, 8, 9));
        System.out.println(users);
    }

    //条件查询 map
    @Test
    public void testSelectByBatchIds(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","mybatis-plus-test");
        map.put("age",89);
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }

13、测试分页查询部分

@Test
    //测试分页查询
    public void testPage(){
        //参数一:当前页
        //参数二:页面大小
        Page<User> page = new Page<>(1,5);
        Page<User> userPage = userMapper.selectPage(page, null);
//        page.getRecords().forEach(System.out::println);
//        //获取总数
//        System.out.println("总数:");
//        System.out.println(page.getTotal());
        System.out.println("查询结果");
        System.out.println(userPage.getRecords());
        System.out.println("总数");
        System.out.println(userPage.getTotal());
    }

14、测试插入部分

//测试插入功能
    @Test
    public void testInsert(){
        User user = new User();
        user.setName("mybatis-18-plus-test18");
        user.setAge(18);
        user.setEmail("mabat-18test@qq.com");
        int result=userMapper.insert(user);
        System.out.println(result);
        System.out.println(user);
        System.out.println(user.getId());
    }

15、测试更新部分

//更新
    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(10L);
        user.setName("mybatis-plus-test");
        int i=userMapper.updateById(user);
        System.out.println(i);
    }

16、测试删除部分(如何逻辑删除需在实体类做配置)

//删除操作
    @Test
    public  void testDeleteById(){
        int rows = userMapper.deleteById(1000L);
        System.out.println(rows);
    }

    //批量删除根据ID
    @Test
    public  void testDeleteBatchId(){
        userMapper.deleteBatchIds(Arrays.asList(996,997,998));
    }

    //通过map删除
    @Test
    public  void testDeleteMap(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","叔叔婶婶");
        userMapper.deleteByMap(map);
    }

17、注:实体类的时间映射,添加注解@JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)
18、当updateById时,如果要插入空值,则在实体类上新增注解@TableField(updateStrategy = FieldStrategy.IGNORED)即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是基于 Spring BootMyBatis-Plus、Thymeleaf 和 Bootstrap 的留言板的实现步骤: 1. 创建 Spring Boot 项目 在 IDEA 中创建一个 Spring Boot 项目,选择 Web 和 Thymeleaf 作为依赖。 2. 添加 MyBatis-Plus 依赖 在 pom.xml 文件中添加 MyBatis-Plus 依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> ``` 3. 创建留言板数据表 在 MySQL 中创建一个名为 message_board 的数据表,包含以下字段: ```sql CREATE TABLE `message_board` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL COMMENT '留言人姓名', `email` varchar(50) NOT NULL COMMENT '留言人邮箱', `content` varchar(255) NOT NULL COMMENT '留言内容', `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='留言板'; ``` 4. 创建 MyBatis-Plus 实体类和 Mapper 使用 MyBatis-Plus 的代码生成器,生成 Message 实体类和 MessageMapper 接口。 5. 编写 Service 层 创建 MessageService 接口和 MessageServiceImpl 实现类,其中 MessageServiceImpl 实现类注入 MessageMapper,实现增删改查等方法。 6. 编写 Controller 层 创建 MessageController 类,其中注入 MessageService,实现留言板的展示、添加留言和删除留言等功能。 7. 编写 Thymeleaf 页面 在 templates 目录下创建 message.html 页面,使用 Thymeleaf 和 Bootstrap 实现留言板的展示和添加留言的表单。 8. 运行项目 使用 IDEA 运行项目,在浏览器中访问 http://localhost:8080/message 即可看到留言板页面。 以上就是基于 Spring BootMyBatis-Plus、Thymeleaf 和 Bootstrap 的留言板的实现步骤,你可以参考这些步骤来实现自己的留言板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值