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

济南 网站建设那家好承德网站制作多少钱

济南 网站建设那家好,承德网站制作多少钱,有人有片在线观看的资源,基于python的网站开发项目目录一、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://wiki.neutronadmin.com/news/182171/

相关文章:

  • 八亿wap建站网站优化seo培
  • 做视频网站 投入购物网站功能报价
  • 广西住房与建设厅网站首页跨境电商saas
  • 淮南市网站开发的方式电商平台项目商业计划书
  • 凡科免费建站wordpress注册
  • 网站查询关键词排名软件无锡 网站建设
  • 镇江企业网站湖南做网站 地址磐石网络
  • wordpress ip 改变重庆网站seo方法
  • 深圳网络营销十年乐云seo专家长沙百度首页优化
  • 新乡市建设路小学网站网站建设现状 数据
  • 成都打鱼网站建设短网址生成器是什么意思
  • 网站建设及维修合同范本网站推广公司黄页
  • 建设门户网站的基本意义有哪些合肥网络运营公司哪家好
  • 网站会员营销营销推广文案
  • 工业设计网站导航360免费
  • 网站建设的实施方案免费网战空间
  • 成都企业建站公司在线咨询搜索量查询百度指数
  • 深圳市官网网站建设哪家好易企秀怎么做招聘网站超链接
  • 网站栏目标题小说网站的里面的搜索是怎么做的
  • 网站建设价格济南青岛网站建设收费哪个平台好
  • 长春企业网站制作优化公司网站的管理和维护
  • c语言做网站后台服务wordpress .htaccess 伪静态
  • 电商网站平台建设视频夜间直播软件下载
  • 做电影网站挣钱网上商店的优势和劣势
  • 如何批量入侵WordPress站网站建设公司位置
  • 网站建设要哪些seo开一个公司需要具备什么条件
  • 网站前端设计要做什么的wordpress 文章摘要 插件
  • 做网站的经历网易邮箱163登录
  • 建网站的方案如何设计网站布局
  • php网站开发项目如何建网站教程视频