高端定制网站设计2023免费网站推广
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:14
当前位置: 首页 > news >正文
高端定制网站设计,2023免费网站推广,设计一个电商网站的首页,建企业网站怎么收费MybatisPlus概述
无侵入#xff1a;只做增强不做改变#xff0c;引入它不会对现有工程产生影响#xff0c;如丝般顺滑损耗小#xff1a;启动即会自动注入基本 CURD#xff0c;性能基本无损耗#xff0c;直接面向对象操作强大的 CRUD 操作#xff1a;内置通用 Mapper、通…MybatisPlus概述
无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑损耗小启动即会自动注入基本 CURD性能基本无损耗直接面向对象操作强大的 CRUD 操作内置通用 Mapper、通用 Service仅仅通过少量配置即可实现单表大部分 CRUD 操作更有强大的条件构造器满足各类使用需求支持 Lambda 形式调用通过 Lambda 表达式方便的编写各类查询条件无需再担心字段写错 特点 无侵入 BaseMapper条件构造器 内置分页 全局拦截插件
快速入门
- 创建数据库 DROP TABLE IF EXISTS user;CREATE TABLE user (id BIGINT NOT NULL COMMENT 主键ID,name VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id) ); INSERT INTO user (id, name, age, email) VALUES (1, Jone, 18, test1baomidou.com), (2, Jack, 20, test2baomidou.com), (3, Tom, 28, test3baomidou.com), (4, Sandy, 21, test4baomidou.com), (5, Billie, 24, test5baomidou.com);
- 初始化springboot项目 !–连接数据库– dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId /dependency !–lombok– dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId /dependency !–mybatisPlus– !– https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter – dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.2/version /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope /dependency 3. 配置数据库连接对象 spring:datasource:url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8driver-class-name: com.mysql.cj.jdbc.Driverpassword: rootusername: root
- 创建实体类 Data AllArgsConstructor NoArgsConstructor Component public class User {private Long id;private String name;private int age;private String email; }
- 编写接口 Repository Mapper public interface UserMapper extends BaseMapperUser {}
- test测试 SpringBootTest class MybatisplusApplicationTests {Autowiredprivate UserMapper userMapper;Testvoid contextLoads() {ListUser userList userMapper.selectList(null);userList.forEach(System.out::println);}} 配置日志 我们所有的sql现在不可见需要到日志功能 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl CRUD拓展 插入操作 插入 Test public void testInsert(){User user new User();user.setName(张三);user.setAge(18);user.setEmail(123123qq.com);int res userMapper.insert(user);System.out.println(res);//受影响行数System.out.println(user);//id会自动回填 } 数据库插入的id的默认值为全局唯一的id 主键生成策略 默认 ASSIGN_ID 分布式系统唯一id生成策略分布式系统唯一ID生成方案汇总 - nick hao - 博客园 (cnblogs.com) 雪花算法 snowflake是Twitter开源的分布式ID生成算法结果是一个long型的ID。其核心思想是使用41bit作为毫秒数10bit作为机器的ID5个bit是数据中心5个bit的机器ID12bit作为毫秒内的流水号意味着每个节点在每毫秒可以产生 4096 个 ID最后还有一个符号位永远是0可以保证全球唯一。 主键自增 实体类字段上增加TableId(type IdType.AUTO) 数据库字段是自增的 再次测试插入 其余源码解释 AUTO(0),//自增 NONE(1),//未设置主键 INPUT(2),//手动输入 ASSIGN_ID(3),//默认的全局id ASSIGN_UUID(4);//全局唯一id uuid 更新操作 public void testUpdate(){User user new User();user.setId(6L);user.setName(李四);int res userMapper.updateById(user);//虽然此时是byid但传入的是一个对象} 所有的sql都会自动动态给你配置 自动填充策略 创建时间修改时间这些操作都是自动完成的我们不希望手动更新 阿里开发手册所有的数据库表gmt_create,gmt_modified几乎所有的表都具备而且需要自动化。 数据库级别 1. 在表中新建字段create_time,update_time
- 与实体类同步 代码级别 1. 删除数据库默认值
2.实体类的字段上增加注解
TableField(fill FieldFill.INSERT)
private LocalDateTime createTime;TableField(fill FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime; 3. 编写处理器处理注解
Component
Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {log.info(start insert fill ….);//MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)this.setFieldValByName(createTime, LocalDateTime.now(),metaObject);this.setFieldValByName(updateTime, LocalDateTime.now(),metaObject);}Overridepublic void updateFill(MetaObject metaObject) {log.info(start update fill ….);this.setFieldValByName(updateTime,LocalDateTime.now(),metaObject);}
} 乐观锁 乐观锁无论出现什么问题都不会去上锁如果出现问题就在测试加锁处理再次更新值测试 悲观锁无论干什么都会上锁 取出记录时获取当前 version 更新时带上这个 version 执行更新时 set version newVersion where version oldVersion 如果 version 不对就更新失败
测试 1. 数据库字段中增加version字段为1 2. 同步实体类 Version private Integer version; 3. 注册乐观锁组件 EnableTransactionManagement Configuration MapperScan(com.sfy.mybatisplus.dao) public class MybatisPlusConfig {//注册乐观锁插件Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mybatisPlusInterceptor;} } - 测试 成功案例 Test public void TestOptimisticLocker(){User user userMapper.selectById(6l);user.setName(王五);userMapper.updateById(user); } 失败案例 此时可以使用自旋锁进行操作 Test public void TestOptimisticLocker2(){User user userMapper.selectById(6l);user.setName(王五1);//模拟另一个线程插队User user1 userMapper.selectById(6l);user1.setName(王五2);userMapper.updateById(user1);userMapper.updateById(user);//如果没有乐观锁就会覆盖插队线程} 查询操作 1. 单次查询 User user userMapper.selectById(1l); 2. 批量查询 ListUser users userMapper.selectBatchIds(Arrays.asList(1l, 2l, 3l)); 3. 条件查询 HashMapString,Object map new HashMap(); map.put(name,张三); ListUser users1 userMapper.selectByMap(map); users1.forEach(System.out::println); 会自动进行sql拼接 分页查询 使用limit语句 使用pageHelper MP中内置分页插件 1. 导入插件 Bean public MybatisPlusInterceptor mybatisPlusInterceptor2() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor; }
- 直接使用即可 在分页查询之间会进行一次查询总数 删除操作
- 单条删除 userMapper.deleteById(1l); 2. 批量删除 userMapper.deleteBatchIds(Arrays.asList(1l, 2l, 3l));
- 条件删除 HashMapString, Object map new HashMap(); map.put(name,张三); userMapper.selectByMap(map); 逻辑删除 物理删除数据库字段被删除 逻辑删除数据库字段并没有被删除而是通过变量使他失效 管理员可以查看被删除得记录防止数据得丢失类似于回收站 1. 数据库中添加deleted字段默认值为0
- 同步字段 TableLogic private Integer deleted; 3. 配置yml文件 global-config:db-config:logic-delete-value: 1logic-not-delete-value: 0
- 测试 实际上是进行了一次更新操作 条件构造器Wrapper 可以进行复杂得条件查询 allEq:条件进行拼接 eq等于 ne不等于 gt大于 ge大于等于 lt小于 Ie小于等于 between范围查询 like模糊查询 isNull为空 in设置条件得范围
- 上一篇: 高端定制网站公司哪家好wordpress 体育
- 下一篇: 高端定制网站速度北京软件外包公司排名
相关文章
-
高端定制网站公司哪家好wordpress 体育
高端定制网站公司哪家好wordpress 体育
- 技术栈
- 2026年03月21日
-
高端的网站优化公司网页游戏网站排名
高端的网站优化公司网页游戏网站排名
- 技术栈
- 2026年03月21日
-
高端的赣州网站建设app网页设计网站
高端的赣州网站建设app网页设计网站
- 技术栈
- 2026年03月21日
-
高端定制网站速度北京软件外包公司排名
高端定制网站速度北京软件外包公司排名
- 技术栈
- 2026年03月21日
-
高端建站的公司谷歌云 阿里云 做网站
高端建站的公司谷歌云 阿里云 做网站
- 技术栈
- 2026年03月21日
-
高端建站什么意思什么是多页面网站
高端建站什么意思什么是多页面网站
- 技术栈
- 2026年03月21日






