本章介绍了数据持久化的相关技术,对于什么是持久化、ORM原理、常用的ORM框架进行了一 一说明,对于MyBatisPlus的特点、MyBatisPlus架构以及MyBatisPlus的常用注解进行了详细的介绍,最后采用一个综合的案例对于MyBatisPlus的上机操作进行了实战演练。

| 属性 | 类型 | 必须指定值 | 默认值 | 描述 |
|---|---|---|---|---|
| value | String | 否 | “” | 表名 |
| schema | String | 否 | “” | schema(@since 3.1.1) |
| keepGlobalPrefix | boolean | 否 | false | 是否保持使用全局的 tablePrefix 的值(如果设置了 全局 tablePrefix 且自行设置了value 的值)(@since 3.1.1) |
| resultMap | String | 否 | “” | xml 中 resultMap 的 id |
| autoResultMap | boolean | 否 | false | 是否自动构建 resultMap 并使用(如果设置resultMap 则不会进行 resultMap 的自动构建并注入)(@since 3.1.2) |
| 属性 | 类型 | 必须指定 | 默认值 | 描述 |
|---|---|---|---|---|
| value | String | 否 | “” | 主键字段名 |
| type | Enum | 否 | IdType.NONE | 主键类型 |
| 属性 | 类型 | 必须指定 | 默认值 | 描述 |
|---|---|---|---|---|
| value | String | 否 | “” | 字段名 |
| el | String | 否 | “” | 映射为原生 #{ … } 逻辑当于写在 xml 里的 #{ … 部分 |
| exist | boolean | 否 | true | 是否为数据库表字段 |
| condition | String | 否 | “” | 字段 where 实体查询比较件,有值设置则按设置的 值为没有则为默认全局的 %s=# {%s} |
| update | String | 否 | “” | 字段 update set 部分注例如:update="%s+1": 表更新时会 set version=version+1(该属优先级高于 el 属性) |
| strategy | Enum | 否 | FieldStrategy.DEFAULT | 字段验证策略 3.1.2+使用3个替代 |
| insertStrategy | Enum | N | DEFAULT | 举例:NOT_NULL: insert into table_a(column) values (columnProperty ) |
| updateStrategy | Enum | N | DEFAULT | 举例:IGNORED: update table_a set column=# {columnProperty} |
| whereStrategy | Enum | N | DEFAULT | 举例:NOT_EMPTY: where colum {columnProperty} |
| fill | Enum | 否 | FieldFill.DEFAULT | 字段自动填充策略 |
| select | boolean | 否 | true | 是否进行 select 查询 |
| keepGlobalFormat | boolean | 否 | false | 是否保持使用全局的 forma 进行处理(@since 3.1.1) |
| 属性 | 类型 | 必须指定 | 默认值 | 描述 |
|---|---|---|---|---|
| value | String | 否 | “” | 逻辑未删除值 |
| delval | String | 否 | “” | 逻辑删除值 |
| 属性 | 类型 | 必须指定 | 默认值 | 描述 |
|---|---|---|---|---|
| filter | boolean | 否 | false | true: 表示过滤SQL解析,即不会进入ISqlParser解析链, 否则会进解析链并追加例如tenant_id等条件 |
| 属性 | 类型 | 必须指定 | 默认值 | 描述 |
|---|---|---|---|---|
| value | String | 否 | “” | 序列名 |
| clazz | Class | 否 | Long.class | id的类型, 可以指定String.class, 这样返回的Sequence值是字符串"1" |
- DROP TABLE IF EXISTS user;
-
- CREATE TABLE user
- (
- id BIGINT(20) NOT NULL COMMENT '主键ID',
- name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
- age INT(11) NULL DEFAULT NULL COMMENT '年龄',
- email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
- PRIMARY KEY (id)
- );
- DELETE FROM user;
-
- INSERT INTO user (id, name, age, email) VALUES
- (1, 'Jone', 18, 'test1@baomidou.com'),
- (2, 'Jack', 20, 'test2@baomidou.com'),
- (3, 'Tom', 28, 'test3@baomidou.com'),
- (4, 'Sandy', 21, 'test4@baomidou.com'),
- (5, 'Billie', 24, 'test5@baomidou.com');
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource #Druid连接池类型 driver-class-name: com.mysql.jdbc.Driver #mysql驱动类 url: jdbc:mysql://localhost:3306/userdb #数据库url地址 username: root #数据库用户名 password: root #数据库密码 druid: validation-query: SELECT 1 FROM DUAL #验证的查询语句 initial-size: 10 #连接池启动时,创建的链接对象个数 min-idle: 10 max-active: 200 min-evictable-idle-time-millis: 300000 test-on-borrow: false test-while-idle: true time-between-eviction-runs-millis: 30000 pool-prepared-statements: true max-open-prepared-statements: 100 ....
@MapperScan 注解@MapperScan 注解,扫描 Mapper 文件夹@SpringBootApplication @MapperScan("cn.com.chinahitech.mybatisplus_demo.mapper") public class MybatisplusDemoApplication { public static void main(String[] args) { SpringApplication.run(MybatisplusDemoApplication.class, args); } }
@Data public class User { private Long id; private String name; private Integer age; private String email; }
public interface UserMapper extends BaseMapper
@RunWith(SpringRunner.class) @SpringBootTest class MybatisplusDemoApplicationTests { @Autowired private UserMapper userMapper; @Test public void testSelect() { System.out.println(("----- selectAll method test ------")); List
- User(id=1, name=Jone, age=18, email=test1@baomidou.com)
- User(id=2, name=Jack, age=20, email=test2@baomidou.com)
- User(id=3, name=Tom, age=28, email=test3@baomidou.com)
- User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
- User(id=5, name=Billie, age=24, email=test5@baomidou.com)