旅行网站系统wordpress 视频模板下载地址

当前位置: 首页 > news >正文

旅行网站系统,wordpress 视频模板下载地址,制作网页需要多少钱,手机端访问 php网站文章目录 一、初识 MyBatis Plus1.1 MyBatis Plus 是什么1.2 MyBatis Plus 和 MyBatis 的区别 二、在 Spring Boot 项目中集成 MyBatis Plus2.1 环境准备2.2 引入 MyBatis Plus 依赖2.3 定义 Mapper2.4 测试 MyBatis Plus 的使用 三、MyBatis Plus 常用注解3.1 为什么需要注解3… 文章目录 一、初识 MyBatis Plus1.1 MyBatis Plus 是什么1.2 MyBatis Plus 和 MyBatis 的区别 二、在 Spring Boot 项目中集成 MyBatis Plus2.1 环境准备2.2 引入 MyBatis Plus 依赖2.3 定义 Mapper2.4 测试 MyBatis Plus 的使用 三、MyBatis Plus 常用注解3.1 为什么需要注解3.2 TableName3.3 TableId3.4 TableField 四、MyBatis Plus 常见配置 一、初识 MyBatis Plus 1.1 MyBatis Plus 是什么 MyBatis Plus简称 MyBatis-Plus 或 MP是一个流行的Java持久层框架它在 MyBatis 的基础上进行了扩展旨在简化数据库操作和提高开发效率。它提供了丰富的功能和工具使开发者能够更轻松地进行数据库操作包括增删改查等常见操作。MyBatis Plus 还提供了一套方便的 API 和注解可以减少编写重复性代码的工作。 MyBatis Plus 的官网https://www.baomidou.com
1.2 MyBatis Plus 和 MyBatis 的区别 MyBatis Plus 与原始的 MyBatis 框架有以下主要区别 功能增强MyBatis Plus 在 MyBatis 的基础上提供了更多的功能如通用的 CRUD 操作、分页查询、条件构造器等。这些功能减少了开发人员的工作量提高了开发效率。 注解支持MyBatis Plus 引入了一系列注解如TableName、TableId、TableField等使得实体类的映射更加灵活和方便不再需要 XML 映射文件。 更强大的条件构造器MyBatis Plus 的条件构造器允许我们以更加直观和链式的方式构建 SQL 查询条件而不必担心拼接 SQL 字符串。 自动代码生成MyBatis Plus 提供了代码生成器可以根据数据库表结构自动生成实体类和 Mapper 接口极大地简化了开发过程。
总的来说MyBatis Plus 是 MyBatis 的增强版旨在提供更多便捷的特性减少开发工作同时保留了 MyBatis 的灵活性和强大性能。 二、在 Spring Boot 项目中集成 MyBatis Plus 2.1 环境准备 为了更好的演示 MyBatis Plus 的使用我首先准备了一个 Spring Boot Demo 示例代码其中使用了 MyBatis 实现了对一张 User 表的增删改查操作 这个 Demo 的结构如下
User 表的结构如下
并且通过单元测试使用了对 User 表的增删改查功能的测试 以上就会整个 Demo 的结构下面将使用 MyBatis Plus 来代替 MyBatis实现对 User 表的增删改查操作。 2.2 引入 MyBatis Plus 依赖 MyBatis Plus 提供了 Spring Boot 的自动装配功能starter并且同时实现了 MyBatis 的相关功能其 Maven 依赖如下将其拷贝到 pom,xml文件下即可 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version /dependency注意由于 MyBatis Plus 同时包含了 MyBatis 的功能因此以前的 MyBatis 依赖则可以直接删除掉
2.3 定义 Mapper 为了简化对数据库表的增删改查操作MyBatis Plus 提供了一个基础的BaseMapper接口其中以及包含了对单表的增删改查操作 因此我们自己定义的Mapper只需要继承这个接口就能够使用这些方法。例如改造原来的UserMapper public interface UserMapper extends BaseMapperUser { } 此时原来UserMapper接口中的方法和 UserMapper.xml中写的SQL语句也都可以不要了 2.4 测试 MyBatis Plus 的使用 最后我们可以在 UserMapperTest 类中改造我们的测试方法将原来增删改查的方法改成从 BaseMapper 中继承过来的方法 SpringBootTest class UserMapperTest {Autowiredprivate UserMapper userMapper;Testvoid testInsert() {User user new User();user.setId(6L);user.setUsername(Lucy);user.setPassword(123);user.setPhone(11111111111);user.setBalance(200);user.setInfo({\age: 24, \intro: \英文老师\, \gender: \female});user.setCreateTime(LocalDateTime.now());user.setUpdateTime(LocalDateTime.now());// userMapper.saveUser(user);userMapper.insert(user);}Testvoid testSelectById() {// User user userMapper.queryUserById(5L);User user userMapper.selectById(5L);System.out.println(user user);}Testvoid testQueryByIds() {// ListUser users userMapper.queryUserByIds(List.of(1L, 2L, 3L, 4L));ListUser users userMapper.selectBatchIds(Arrays.asList(1L, 2L, 3L, 4L));users.forEach(System.out::println);}Testvoid testUpdateById() {User user new User();user.setId(5L);user.setBalance(20000);// userMapper.updateUser(user);userMapper.updateById(user);}Testvoid testDeleteUser() {// userMapper.deleteUser(5L);userMapper.deleteById(5L);} }在上面的代码中注释掉的语句是原来通过 MyBatis 来实现的在这些注释代码的下一行则是有 MyBatis Plus 提供的功能。运行这些测试代码全部顺利通过。至此是不是觉得 MyBatis Plus 比 MyBatis 好用多了啊。
三、MyBatis Plus 常用注解 3.1 为什么需要注解 在上面的例子中仅仅是引入了 MyBatis Plus 的依赖然后在自己的 Mapper 接口中继承了 BaseMapper就实现了对单表的增删改查操作那么问题来了就是 MyBatis Plus 是如何知道对哪张表进行操作的呢 通过观察我们自己的 UserMapper 可以发现继承的 BaseMapper 是一个泛型接口我们指定了 user 表对应的 PO 类 User例如
此时泛型中的 User就是与数据库对应的PO类。Mybatis Plus 就是根据 PO 实体的信息来推断出表的信息从而生成具体的 SQL语句。在默认情况下MyBatis Plus 会根据 PO 实体进行以下操作 Mybatis Plus 会把 PO 实体的类名按照 驼峰转下划线 的规则将其作为数据库表名Mybatis Plus 会把 PO 实体的所有变量名按照 驼峰转下划线的规则作为表的字段名并根据变量类型推断字段类型Mybatis Plus 会把名为 id 的字段作为该表的主键。 但是在很多的实际情况下都与上面默认的情况不符。比如数据库表以tb_开头、主键名不是id、字段是一些特殊的关键字等等。这些情况在MyBatis中可以在Mapper.xml文件中进行解决但是在 Mybatis Plus中就可以使用下面的注解进行解决了。 3.2 TableName TableName 注解用于指定数据库表的名称。 默认情况下MyBatis Plus 会根据实体类的类名转化为数据库表名但如果数据库表名与实体类的类名不匹配就可以使用这个注解来明确指定表名。这对于处理表名以特殊前缀开头例如tb_的情况非常有用。 示例 TableName(user) public class User {private Long id;private String name; }TableName 注解除了指定表名以外还可以指定很多其它属性 属性类型必须指定默认值描述valuestring否“”表名schemastring否“”schemakeepGlobalPrefixboolean否false是否保持使用全局的 tablePrefix 的值当全局tablePrefix生效时)resultMapstring否“”xml 中 resultMap 的 id (用于满足特定类型的实体类对象绑定)autoResultMapboolean否false是否自动构建resultMap 并使用(如果设置 resultMap 则不会进行 resultMap 的自动构建与注入)excludePropertystring[]否{}需要排除的属性名 since 3.3.1 3.3 TableId TableId 注解用于指定主键字段。 默认情况下MyBatis Plus 会将名为 id 的字段作为主键但如果表的主键字段名称不是 id就可以使用这个注解来指定实体类中的主键字段。 示例 TableName(user) public class User {TableIdprivate Long id;private String name; }TableId 注解支持两个属性 属性类型必须指定默认值描述valueString否“”表名typeEnum否IdType.NONE指定主键类型 IdType支持的类型有 值描述AUTO数据库 ID 自增NONE无状态该类型为未设置主键类型注解里等于跟随全局全局里约等于 INPUTINPUTinsert 前自行 set 主键值ASSIGN_ID分配 ID(主键类型为 Number(Long 和 Integer)或 String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)ASSIGN_UUID分配 UUID,主键类型为 String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认 default 方法)ID_WORKER分布式全局唯一 ID 长整型类型(please use ASSIGN_ID)UUID32 位 UUID 字符串(please use ASSIGN_UUID)ID_WORKER_STR分布式全局唯一 ID 字符串类型(please use ASSIGN_ID) 这里比较常见的有三种 AUTO利用数据库的id自增长INPUT手动生成 idASSIGN_ID雪花算法生成 Long 类型的全局唯一 id这是默认的 ID 策略 3.4 TableField TableField 注解用于指定数据库表字段与实体类属性之间的映射关系。 如果字段名与属性名不匹配或者需要进行特殊的映射就可以使用这个注解来定义字段名、是否为主键、是否为插入或更新时的条件等。 示例 TableName(user) public class User {TableIdprivate Long id;private String name;private Integer age;TableField(isMarried)private Boolean isMarried;TableField(concat)private String concat; }在一般情况下并不需要给字段添加TableField注解一些特殊情况除外例如 成员变量名与数据库字段名不一致成员变量是以isXXX命名按照 JavaBean 的规范Mybatis Plus 识别字段时会把 is 去除这就导致与数据库的字段名不符。成员变量名与数据库一致但是与数据库的关键字冲突。使用TableField注解给字段名添加 转义。 另外TableField 注解还支持其他参数 属性类型必填默认值描述valueString否“”数据库字段名existboolean否true是否为数据库表字段conditionString否“”字段 where 实体查询比较条件有值设置则按设置的值为准没有则为默认全局的 %s#{%s}参考(opens new window)updateString否“”字段 update set 部分注入例如当在version字段上注解update“%s1” 表示更新时会 set versionversion1 该属性优先级高于 el 属性insertStrategyEnum否FieldStrategy.DEFAULT举例NOT_NULL insert into table_a(column) values (#{columnProperty})updateStrategyEnum否FieldStrategy.DEFAULT举例IGNORED update table_a set column#{columnProperty}whereStrategyEnum否FieldStrategy.DEFAULT举例NOT_EMPTY where column#{columnProperty}fillEnum否FieldFill.DEFAULT字段自动填充策略selectboolean否true是否进行 select 查询keepGlobalFormatboolean否false是否保持使用全局的 format 进行处理jdbcTypeJdbcType否JdbcType.UNDEFINEDJDBC 类型 (该默认值不代表会按照该值生效)typeHandlerTypeHander否类型处理器 (该默认值不代表会按照该值生效)numericScaleString否“”指定小数点后保留的位数 四、MyBatis Plus 常见配置 MyBatis Plus 同样支持使用 yaml 格式的配置关于 MyBatis Plus 的配置可以从起官网中进行了解使用配置。 下面是关于 MyBatis Plus 的常用配置 mybatis-plus:type-aliases-package: com.demo.mp.domain.po # 别名扫描包mapper-locations: classpath:/mapper/**/.xml # Mapper.xml文件地址默认值global-config:db-config:id-type: auto # 指定 id 的生成方式configuration:map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射cache-enabled: false # 是否开启二级缓存对上述配置的说明 因为 MyBatis Plus 支持 MyBatis 因此在 MyBatis Plus 中也支持手写 SQL形式的 Mapper 映射。因为 mapper 文件的读取地址可以由我们自己配置。id-type可指定在默认情况下 id 的生成方式比如 auto、 assign_id 等。map-underscore-to-camel-case开启下划线和驼峰的命名规则直接的映射转换。cache-enabled是否开启二级缓存。