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

只建设电子商务网站不维护泰安58同城租房

只建设电子商务网站不维护,泰安58同城租房,怎样免费做书画网站,个人网站备案麻烦吗目录一、insert1、插入操作2、主键策略二、update1、根据Id更新操作2、自动填充3、乐观锁三、select1、根据id查询记录2、通过多个id批量查询3、简单的条件查询4、分页四、delete1、根据id删除记录2、批量删除3、简单的条件查询删除4、逻辑删除一、insert1、插入操作RunWith(Sp…目录一、insert1、插入操作2、主键策略二、update1、根据Id更新操作2、自动填充3、乐观锁三、select1、根据id查询记录2、通过多个id批量查询3、简单的条件查询4、分页四、delete1、根据id删除记录2、批量删除3、简单的条件查询删除4、逻辑删除一、insert1、插入操作RunWith(SpringRunner.class)SpringBootTestpublic class CRUDTests {Autowiredprivate UserMapper userMapper;Testpublic void testInsert(){User user new User();user.setName(Helen);user.setAge(18);user.setEmail([email protected]);int result userMapper.insert(user);System.out.println(result); //影响的行数System.out.println(user); //id自动回填}}注意数据库插入id值默认为全局唯一id2、主键策略(1)ID_WORKERMyBatis-Plus默认的主键策略是ID_WORKER  全局唯一ID参考资料分布式系统唯一ID生成方案汇总https://www.cnblogs.com/haoxinyue/p/5208136.html(2)自增策略要想主键自增需要配置如下主键策略需要在创建数据表的时候设置主键自增实体字段中配置 TableId(type IdType.AUTO) TableId(type IdType.AUTO)private Long id;要想影响所有实体的配置可以设置全局主键配置#全局设置主键生成策略mybatis-plus.global-config.db-config.id-typeauto其它主键策略分析 IdType 源码可知Getterpublic enum IdType {/*** 数据库ID自增*/AUTO(0),/*** 该类型为未设置主键类型*/NONE(1),/*** 用户输入ID* 该类型可以通过自己注册自动填充插件进行填充*/INPUT(2),/* 以下3种类型、只有当插入对象ID 为空才自动填充。 *//*** 全局唯一ID (idWorker)*/ID_WORKER(3),/*** 全局唯一ID (UUID)*/UUID(4),/*** 字符串全局唯一ID (idWorker 的字符串表示)*/ID_WORKER_STR(5);private int key;IdType(int key) {this.key key;}}二、update1、根据Id更新操作注意update时生成的sql自动是动态sqlUPDATE user SET age? WHERE id?Testpublic void testUpdateById(){User user new User();user.setId(1L);user.setAge(28);int result userMapper.updateById(user);System.out.println(result);}2、自动填充项目中经常会遇到一些数据每次都使用相同的方式填充例如记录的创建时间更新时间等。我们可以使用MyBatis Plus的自动填充功能完成这些字段的赋值工作(1)数据库表中添加自动填充字段在User表中添加datetime类型的新的字段 create_time、update_time(2)实体上添加注解Datapublic class User {......TableField(fill FieldFill.INSERT)private Date createTime;[email protected](fill FieldFill.UPDATE)TableField(fill FieldFill.INSERT_UPDATE)private Date updateTime;}(3)实现元对象处理器接口注意不要忘记添加 Component 注解Componentpublic class MyMetaObjectHandler implements MetaObjectHandler {private static final Logger LOGGER LoggerFactory.getLogger(MyMetaObjectHandler.class);Overridepublic void insertFill(MetaObject metaObject) {LOGGER.info(start insert fill ....);this.setFieldValByName(createTime, new Date(), metaObject);this.setFieldValByName(updateTime, new Date(), metaObject);}Overridepublic void updateFill(MetaObject metaObject) {LOGGER.info(start update fill ....);this.setFieldValByName(updateTime, new Date(), metaObject);}}3、乐观锁主要适用场景当要更新一条记录的时候希望这条记录没有被别人更新也就是说实现线程安全的数据更新乐观锁实现方式取出记录时获取当前version更新时带上这个version执行更新时 set version newVersion where version oldVersion如果version不对就更新失败(1)数据库中添加version字段ALTER TABLE user ADD COLUMN version INT(2)实体类添加version字段并添加 Version 注解VersionTableField(fill FieldFill.INSERT)private Integer version;(3)元对象处理器接口添加version的insert默认值Overridepublic void insertFill(MetaObject metaObject) {......this.setFieldValByName(version, 1, metaObject);}特别说明:支持的数据类型只有 int,Integer,long,Long,Date,Timestamp,LocalDateTime整数类型下 newVersion oldVersion 1newVersion 会回写到 entity 中仅支持 updateById(id) 与 update(entity, wrapper) 方法在 update(entity, wrapper) 方法下, wrapper 不能复用!!!(4)在 MybatisPlusConfig 中注册 Bean创建配置类EnableTransactionManagementConfigurationMapperScan(com.atguigu.mybatis_plus.mapper)public class MybatisPlusConfig {/*** 乐观锁插件*/Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();}}(5)测试乐观锁可以修改成功测试后分析打印的sql语句将version的数值进行了加1操作/*** 测试 乐观锁插件*/Testpublic void testOptimisticLocker() {//查询User user userMapper.selectById(1L);//修改数据user.setName(Helen Yao);user.setEmail([email protected]);//执行更新userMapper.updateById(user);}此时数据库中的version版本也变为了2三、select1、根据id查询记录Testpublic void testSelectById(){User user userMapper.selectById(1L);System.out.println(user);}2、通过多个id批量查询完成了动态sql的foreach的功能Testpublic void testSelectBatchIds(){Listusers userMapper.selectBatchIds(Arrays.asList(1, 2, 3));users.forEach(System.out::println);}3、简单的条件查询通过map封装查询条件Testpublic void testSelectByMap(){HashMapmap new HashMap();map.put(name, Helen);map.put(age, 18);Listusers userMapper.selectByMap(map);users.forEach(System.out::println);}注意map中的key对应的是数据库中的列名。例如数据库user_id实体类是userId这时map的key需要填写user_id4、分页MyBatis Plus自带分页插件只要简单的配置即可实现分页功能(1)在配置类中添加插件/*** 分页插件*/Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}(2)测试selectPage分页测试最终通过page对象获取相关数据Testpublic void testSelectPage() {Pagepage new Page(1,5);userMapper.selectPage(page, null);page.getRecords().forEach(System.out::println);System.out.println(page.getCurrent());System.out.println(page.getPages());System.out.println(page.getSize());System.out.println(page.getTotal());System.out.println(page.hasNext());System.out.println(page.hasPrevious());}控制台sql语句打印SELECT id,name,age,email,create_time,update_time FROM user LIMIT 0,5(3)测试selectMapsPage分页结果集是MapTestpublic void testSelectMapsPage() {Pagepage new Page(1, 5);IPage mapIPage userMapper.selectMapsPage(page, null);//注意此行必须使用 mapIPage 获取记录列表否则会有数据类型转换错误mapIPage.getRecords().forEach(System.out::println);System.out.println(page.getCurrent());System.out.println(page.getPages());System.out.println(page.getSize());System.out.println(page.getTotal());System.out.println(page.hasNext());System.out.println(page.hasPrevious());}四、delete1、根据id删除记录Testpublic void testDeleteById(){int result userMapper.deleteById(8L);System.out.println(result);}2、批量删除Testpublic void testDeleteBatchIds() {int result userMapper.deleteBatchIds(Arrays.asList(8, 9, 10));System.out.println(result);}3、简单的条件查询删除Testpublic void testDeleteByMap() {HashMapmap new HashMap();map.put(name, Helen);map.put(age, 18);int result userMapper.deleteByMap(map);System.out.println(result);}4、逻辑删除物理删除真实删除将对应数据从数据库中删除之后查询不到此条被删除数据逻辑删除假删除将对应数据中代表是否被删除字段状态修改为“被删除状态”之后在数据库中仍旧能看到此条数据记录(1)数据库中添加 deleted字段ALTER TABLE user ADD COLUMN deleted boolean(2)实体类添加deleted 字段并加上 TableLogic 注解 和 TableField(fill FieldFill.INSERT) 注解TableLogicTableField(fill FieldFill.INSERT)private Integer deleted;(3)元对象处理器接口添加deleted的insert默认值Overridepublic void insertFill(MetaObject metaObject) {......this.setFieldValByName(deleted, 0, metaObject);}(4)application.properties 加入配置此为默认值如果你的默认值和mp默认的一样,该配置可无mybatis-plus.global-config.db-config.logic-delete-value1mybatis-plus.global-config.db-config.logic-not-delete-value0(5)在 MybatisPlusConfig 中注册 BeanBeanpublic ISqlInjector sqlInjector() {return new LogicSqlInjector();}(6)测试逻辑删除测试后发现数据并没有被删除deleted字段的值由0变成了1测试后分析打印的sql语句是一条update注意被删除数据的deleted 字段的值必须是 0才能被选取出来执行逻辑删除的操作/*** 测试 逻辑删除*/Testpublic void testLogicDelete() {int result userMapper.deleteById(1L);System.out.println(result);}(7)测试逻辑删除后的查询MyBatis Plus中查询操作也会自动添加逻辑删除字段的判断/*** 测试 逻辑删除后的查询* 不包括被逻辑删除的记录*/Testpublic void testLogicDeleteSelect() {User user new User();Listusers userMapper.selectList(null);users.forEach(System.out::println);}测试后分析打印的sql语句包含 WHERE deleted0SELECT id,name,age,email,create_time,update_time,deleted FROM user WHERE deleted0
http://www.zqtcl.cn/news/160998/

相关文章:

  • 网站排名英文怎么说网页编辑器在线使用
  • 湖南做防水堵漏工程商网站网站建设编程软件
  • 网站编辑专题怎么做徐州建筑工程招投标网站
  • 英文网站建设合同招考网站开发
  • 网上商城网站 找什么做dede本地环境搭建网站
  • 网站开发遇到的问题及解决方法深圳市做网站有哪些公司
  • 自媒体网站 程序18款免费软件app下载推荐
  • 产业园门户网站建设方案瑞昌网络推广
  • 长春市网站建设动漫wordpress主题下载地址
  • 如何做专业的模板下载网站wordpress 多网址
  • 做qq头像的网站wordpress 安装 服务器 系统
  • 怎样查网站的注册地点百度小说排行榜2021
  • 网站建设中中文模板wordpress siren
  • 设计本官方网站电脑版附近室内装修公司电话
  • 服务外包网站wordpress 禁止转载
  • l礼品文化网站建设不常见的网络营销方式
  • 做网站侵权腾讯企点打不开
  • iis 网站拒绝显示此网页上海网站建设类岗位
  • 营销型网站建设推荐google关键词
  • 网站上线是前端还是后端来做如何做垂直门户网站
  • 网站建设与管理2018海尔集团网站 建设目的
  • ps做网站大小wordpress调用 php文件
  • php网站忘记后台密码江苏网页制作报价
  • 网站模板 哪个好完备的常州网站推广
  • 衡水淘宝的网站建设濮阳市城乡一体化示范区主任
  • 公司网上注册在哪个网站商洛市商南县城乡建设局网站
  • 怎么才能让网站图文展示大连网站建设设计
  • 俱乐部网站 模板seo产品是什么意思
  • 新手学做网站的教学书建造师查询官网
  • win2012 iis添加网站群辉做网站服务器