0.数据库代码
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
`id` int(0) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`sex` char(6) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`pwd` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`email` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`version` bigint(0) NOT NULL DEFAULT 1,
`create_time` timestamp(0) NULL DEFAULT NULL,
`update_time` timestamp(0) NULL DEFAULT NULL,
`flag` int(0) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 66
CHARACTER SET = utf8
COLLATE = utf8_bin
ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
1.导入依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.king</groupId> <artifactId>mybatis_plus</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatis_plus</name> <description>Demo project for Spring Boot</description> <properties> <java.version>8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--mybatis-plus的springboot支持--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> <scope>runtime</scope> </dependency> <!--简化代码的工具包--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--执行 SQL 分析打印插件--> <!-- <dependency>--> <!-- <groupId>p6spy</groupId>--> <!-- <artifactId>p6spy</artifactId>--> <!-- <version>3.8.1</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>com.baomidou</groupId>--> <!-- <artifactId>mybatis-plus-core</artifactId>--> <!-- <version>3.4.3.1</version>--> <!-- </dependency>--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> </dependencies>
2.配置application.yml
server: port: 8080 # servlet: # session: # timeout: 60000 # context-path: /mybtis logging: level: root: warn com.king: info org.springframework: error file: name: ../log/mybatis-plus.log mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志 map-underscore-to-camel-case: true # 该配置就是将带有下划线的表字段映射为驼峰格式的实体类属性 global-config: db-config: logic-delete-field: flag # 全局逻辑删除的实体字段名 logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) spring: datasource: # mysql 5 #driver-class-name: org.gjt.mm.mysql.Driver #url: jdbc:mysql://localhost:3306/db9?useUnicode=true&characterEncoding=utf-8&useSSL=false #mysql 8 driver-class-name: com.mysql.cj.jdbc.Driver #url: jdbc:mysql://localhost:3306/db9?useSSL=false&serverTimezone=UTC url: jdbc:mysql://localhost:3306/db9?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8 username: root password: 123456
3.实体类User
package com.king.mybatis.bean; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.time.LocalDateTime; /** * @program: * @description: 用户实体类 * @author: * @create: */ @EqualsAndHashCode(callSuper = true) @Data @Builder @TableName(value = "User")//指定表名 public class User extends Model<User> { private static final long serialVersionUID = -7585862229833387698L; //value与数据库主键列名一致,若实体类属性名与表主键列名一致可省略value @TableId(value = "id", type = IdType.AUTO)//指定自增策略 private Integer id; private String name; private String sex; private String pwd; private String email; // private Integer age; @Version private Long version; //TODO 自动填充 // 注意!这里需要标记为填充字段 //数据库与java类型对照表 // //LocalTime 对应 time //LocalDate 对应 date //LocalDateTime 对应 datetime(timestamp) //创建时间 @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; //上次修改时间 @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; //是否被删除,0表示未删除,1表示已经删除 //@TableLogic 3.3.0,配置后可以忽略不配置 private int flag; public void println() { System.out.println(this); } @Override public Serializable pkVal() { return id; } }
4.UserMapper类(dao层)
package com.king.mybatis.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.king.mybatis.bean.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @Mapper //表明这是一个Mapper,也可以在启动类上加上包扫描 //Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能 public interface UserMapper extends BaseMapper<User> { /** * <p> * 查询 : 根据性别查询用户列表,分页显示 * </p> * * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象) * @param sex 性别 * @return 分页对象 */ @Select("SELECT * FROM user WHERE sex = #{sex}") IPage<User> selectPageBySex(Page<?> page, String sex); } 5.controller层
package com.king.mybatis.controller; //import com.king.mybatis.service.UserServiceImpl; import com.king.mybatis.bean.User; import com.king.mybatis.mapper.UserMapper; import com.king.mybatis.service.UserServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @program: springboot * @description: * @author: King * @create: 2021-09-09 16:32 */ @RestController public class UserController { // @Autowired // UserServiceImpl userService; @Autowired UserMapper userMapper; @GetMapping("/aa") public List selectAll() { return userMapper.selectList(null); } } 6.主启动类MybatisPlusApplication
package com.king.mybatis; import com.king.mybatis.mapper.UserMapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @SpringBootApplication public class MybatisPlusApplication { public static void main(String[] args) { ApplicationContext context=SpringApplication.run(MybatisPlusApplication.class, args); UserMapper userMapper=context.getBean(UserMapper.class);; System.out.println( userMapper.selectList(null)); } }