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

网站注册费用需要多钱百度高级搜索功能

网站注册费用需要多钱,百度高级搜索功能,怎么样制作一个公众号,设计有什么网站推荐3.扩展 代码生成 逻辑删除 枚举处理器 json处理器 配置加密 分页插件 3.1 代码生成 https://blog.csdn.net/weixin_41957626/article/details/132651552 下载下面的插件 红色的是刚刚生成的。 我觉得不如官方的那个好用#xff0c;唯一的好处就是勾选的选项能够看的懂得。…3.扩展 代码生成 逻辑删除 枚举处理器 json处理器 配置加密 分页插件 3.1 代码生成 https://blog.csdn.net/weixin_41957626/article/details/132651552 下载下面的插件 红色的是刚刚生成的。 我觉得不如官方的那个好用唯一的好处就是勾选的选项能够看的懂得。 3.2逻辑删除 不是真的删除是进行uupdate的操作把对应的标志位设置为对应的标志就可以的 mp中可以采用全局的配置设置对应的逻辑删除的操作达到和原先逻辑删除一样的方式。 下面是全局的配置。 global-config:db-config:logic-delete-field: flag #全局删除的实体的字段名logic-delete-value: 1 #逻辑删除值logic-not-delete-value: 0 #逻辑未删除的值说明所有的 表的都是基于下面的格式的。 可以在指定的表的字段上进行设置逻辑删除的字段需要进行单独的设置的。 在数据库中添加逻辑删除的字段。 测试对address的逻辑删除 Testvoid tes61(){boolean flag addressService.removeById(59L);System.out.println(删除的结果flag);} 删除的结果 JDBC Connection [HikariProxyConnection118887511 wrapping com.mysql.cj.jdbc.ConnectionImpl38ee7a9d] will not be managed by SpringPreparing: UPDATE address SET deleted1 WHERE id? AND deleted0Parameters: 59(Long)Updates: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession39c96e48] 删除的结果true 此时进行查询的时候查询不到 Testvoid tes62(){Address address addressService.getById(59L);System.out.println(addressaddress);}查询的结果 JDBC Connection [HikariProxyConnection571251299 wrapping com.mysql.cj.jdbc.ConnectionImpl55b5cd2b] will not be managed by SpringPreparing: SELECT id,user_id,province,city,town,mobile,street,contact,is_default,notes,deleted FROM address WHERE id? AND deleted0Parameters: 59(Long)Total: 0 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSessionebe067d] addressnull此时我们进行逻辑删除的内容找不到了 数据库中的逻辑删除字段类型的设置 可以采用位的方式也可以采用int的类型。 采用这两种方式的显示的方式是不一样的 采用int的类型 此时在idea中显示的就是0和1在代码的设计上需要注意一个问题false需要和0进行对应1需要和true进行对应。 采用位的类型也是相似的道理但是直接显示的时候是不同的。 采用位的时候需要进行转义。 Testvoid tes63(){Address address addressService.getById(60L);System.out.println(addressaddress);} Preparing: SELECT id,user_id,province,city,town,mobile,street,contact,is_default,notes,deleted FROM address WHERE id? AND deleted0Parameters: 60(Long)Columns: id, user_id, province, city, town, mobile, street, contact, is_default, notes, deletedRow: 60, 1, 北京, 北京, 朝阳区, 13700221122, 修正大厦, Jack, 0, null, 0Total: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession205df5dc] addressAddress(id60, userId1, province北京, city北京, town朝阳区, mobile13700221122, street修正大厦, contactJack, isDefaultfalse, notesnull, deletedfalse)3.3枚举处理器 像是状态的字段可以采用对应的状态转换器进行转换。 枚举类型是比常量更加标准的数据的类型。 /*** 使用状态1正常 2冻结*/private Integer status;从枚举类中进行插入的时候需要时候不推荐间接调用的方式。有没有一种方式可以直接枚举类型的转换呢。 mp原先就帮我们定义好了对应的枚举类型的处理器。我们直接进行调用就可以了。 下面是原先类的属性和枚举类的对应的关系。 基本操作 定义一个枚举类 //用户状态信息 AllArgsConstructor Getter public enum UserStatus {NORMAL(1,正常),FREEZE(2,冻结);EnumValueprivate final int value;private final String desc; }配置mp设置一个枚举类型的处理器 mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler修改实体类 // private Integer status;private UserStatus status;测试 Test void tes64(){User usernew User();user.setUsername(赵天);user.setPassword(123456);user.setPhone(102);JSONObject jsonObjectnew JSONObject();//hutool中的jsonObject.set(age,20);jsonObject.set(intro,伏地魔);jsonObject.set(gender,female);user.setInfo(jsonObject.toString());user.setStatus(UserStatus.NORMAL);user.setBalance(2000);user.setCreateTime(DateTime.now());user.setUpdateTime(DateTime.now());boolean flag userService.save(user);System.out.println(是否插入成功flag); }结果 JDBC Connection [HikariProxyConnection1844349670 wrapping com.mysql.cj.jdbc.ConnectionImpl5af64ce0] will not be managed by SpringPreparing: INSERT INTO user ( username, password, phone, info, status, balance, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )Parameters: 赵天(String), 123456(String), 102(String), {age:20,intro:伏地魔,gender:female}(String), 1(Integer), 2000(Integer), 2023-09-03 16:55:18.777(Timestamp), 2023-09-03 16:55:18.778(Timestamp)Updates: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession345d053b] 是否插入成功trueTest void tes65(){User useruserService.lambdaQuery().eq(User::getUsername,赵天).one();System.out.println(user.toString()); }查询出来的结果 User(id1674613593516396924, username赵天, password123456, phone102, info{age: 20, intro: 伏地魔, gender: female}, statusNORMAL, balance2000, createTimeSun Sep 03 16:55:19 CST 2023, updateTimeSun Sep 03 16:55:19 CST 2023)3.4JSON处理器 如何将json字符串转换成对应的类的对象 数据库info的字段类型就是json 这个不是全局的。mvc底层最长用的就是jackson的不是json的类型处理器。 原先采用的是下面的数据类型 private Object info;现在需要改成下面的数据类型并添加对应的类型处理器 TableField(typeHandler JacksonTypeHandler.class)private UserInfo info;创建一个实体类 Data AllArgsConstructor NoArgsConstructor Accessors(chain true) public class UserInfo implements Serializable {private Integer age;private String intro;private String gender; } 此时进行查询的操作 Testvoid tes65(){User useruserService.lambdaQuery().eq(User::getUsername,赵天).one();System.out.println(user.toString());}结果此时查询出来的info的值是null。 JDBC Connection [HikariProxyConnection1451516720 wrapping com.mysql.cj.jdbc.ConnectionImpl49f3ff41] will not be managed by SpringPreparing: SELECT id,username,password,phone,info,status,balance,create_time,update_time FROM user WHERE (username ?)Parameters: 赵天(String)Columns: id, username, password, phone, info, status, balance, create_time, update_timeRow: 1674613593516396924, 赵天, 123456, 102, BLOB, 1, 2000, 2023-09-03 16:55:19, 2023-09-03 16:55:19Total: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession6d099323] User(id1674613593516396924, username赵天, password123456, phone102, infonull, statusNORMAL, balance2000, createTimeSun Sep 03 16:55:19 CST 2023, updateTimeSun Sep 03 16:55:19 CST 2023) 出现上面的原因是我们没有设置resultMap的值 最简单的解决的方式设置自动映射。 TableName(value user,autoResultMap true)此时查询的值就出现了。 JDBC Connection [HikariProxyConnection998015174 wrapping com.mysql.cj.jdbc.ConnectionImpl3b2e5c0d] will not be managed by SpringPreparing: SELECT id,username,password,phone,info,status,balance,create_time,update_time FROM user WHERE (username ?)Parameters: 赵天(String)Columns: id, username, password, phone, info, status, balance, create_time, update_timeRow: 1674613593516396924, 赵天, 123456, 102, BLOB, 1, 2000, 2023-09-03 16:55:19, 2023-09-03 16:55:19Total: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession7c1447b5] User(id1674613593516396924, username赵天, password123456, phone102, infoUserInfo(age20, intro伏地魔, genderfemale), statusNORMAL, balance2000, createTimeSun Sep 03 16:55:19 CST 2023, updateTimeSun Sep 03 16:55:19 CST 2023) 或者是采用自己指定的方式 TableName(value user,resultMap BaseResultMap)resultMap idBaseResultMap typecom.lxz.demo.domain.Userid propertyid columnid jdbcTypeBIGINT/result propertyusername columnusername jdbcTypeVARCHAR/result propertypassword columnpassword jdbcTypeVARCHAR/result propertyphone columnphone jdbcTypeVARCHAR/result propertyinfo columninfo jdbcTypeOTHER typeHandlercom.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler/result propertystatus columnstatus jdbcTypeINTEGER/result propertybalance columnbalance jdbcTypeINTEGER/result propertycreateTime columncreate_time jdbcTypeTIMESTAMP/result propertyupdateTime columnupdate_time jdbcTypeTIMESTAMP/ /resultMap3.5配置加密 mp默认是提供一个aes算法的加密的工具对配置中的敏感信息做加密处理 生成加密的账号和密码 Testpublic void test1(){//生成16位随机aes密钥String randomKey AES.generateRandomKey();System.out.println(randomKeyrandomKey);//利用密钥对用户名和密码进行加密String usernameAES.encrypt(root,randomKey);System.out.println(usernameusername);//利用密钥对密码加密String passwordAES.encrypt(root,randomKey);System.out.println(passwordpassword);}下面是生成的加密的账号和密码以及用于加密和解密的密钥 randomKey19cb291382b38782 usernameebMDrqWwkpNR9jkM2x5Iw passwordebMDrqWwkpNR9jkM2x5Iw将加密之后的配置到配置文件中 spring:datasource:url: jdbc:mysql://localhost:3306/mp?useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueusername: mpw:ebMDrqWwkpNR9jkM2x5Iw #加密password: mpw:ebMDrqWwkpNR9jkM2x5Iw #加密driver-class-name: com.mysql.cj.jdbc.Driver启动的时候加上对应的启动的参数 要是单元测试的话就在下面设置上下面的内容 SpringBootTest(args --mpw.key19cb291382b38782)不是单元测试的话需要设置下面的内容 测试代码 Testvoid tes65(){User useruserService.lambdaQuery().eq(User::getUsername,赵天).one();System.out.println(user.toString());}查询结果 JDBC Connection [HikariProxyConnection180949634 wrapping com.mysql.cj.jdbc.ConnectionImpl7f79edee] will not be managed by SpringPreparing: SELECT * FROM user WHERE (username ?)Parameters: 赵天(String)Columns: id, username, password, phone, info, status, balance, create_time, update_timeRow: 1674613593516396924, 赵天, 123456, 102, BLOB, 1, 2000, 2023-09-03 16:55:19, 2023-09-03 16:55:19Total: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession568750b7] User(id1674613593516396924, username赵天, password123456, phone102, infoUserInfo(age20, intro伏地魔, genderfemale), statusNORMAL, balance2000, createTimeSun Sep 03 16:55:19 CST 2023, updateTimeSun Sep 03 16:55:19 CST 2023) 说明解密的密码成功了。 4.插件功能 本质是拦截器功能 4.1分页插件 下面是常见的内容 编写配置类 Configuration //MapperScan(com.lxz.demo.mapper) public class MybatisPlusConfig {/*** 添加分页插件*/Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor;} }测试简单的分页 Testvoid tes65(){//分页参数Integer pageNum1;Integer pageSize10;//分页对象PageUser pagenew PageUser(pageNum, pageSize);//排序page.addOrder(new OrderItem(username,false));//其他参数pageuserService.page(page);Long countpage.getTotal();ListUser resultpage.getRecords();System.out.println(countcount);result.forEach(System.out::println);}//排序 这个是升序page.addOrder(new OrderItem(username,true));有查询条件的 pageuserService.page(page,null);4.2分页案例 接口内容 补全实体 请求参数 package com.lxz.demo.domain.vo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable; import java.util.List;//返回结果 Data AllArgsConstructor NoArgsConstructor public class PageVoT implements Serializable {private Long total;private Long pages;/** 采用泛型是最好的* */private ListT list;} 返回参数 package com.lxz.demo.domain.vo;import com.lxz.demo.domain.UserInfo; import com.lxz.demo.enums.UserStatus; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;//返回结果 Data AllArgsConstructor NoArgsConstructor public class UserVo implements Serializable {private Long id;private String username;private UserInfo info;private UserStatus status;private Long balance;} 接口类 RestController RequestMapping(/users) public class UserController {Autowiredprivate UserService userService;PostMapping(/page)public PageVoUserVo queryUserByPage(RequestBody PageQuery query){return userService.queryUserByPage(query);}} 或者 区别在于注入的方式是不同的 RestController RequestMapping(/users2) RequiredArgsConstructor public class UserController2 {private final UserService userService;PostMapping(/page)public PageVoUserVo queryUserByPage(RequestBody PageQuery query){return userService.queryUserByPage(query);} } 服务层 public interface UserService extends IServiceUser {PageVoUserVo queryUserByPage(PageQuery query); } Autowiredprivate UserMapper userMapper;Overridepublic PageVoUserVo queryUserByPage(PageQuery query) {// mapper.selectPage() 都是可以的PageUser pagePage.of(query.getPageNo(),query.getPageSize());if (!StrUtil.isBlank(query.getSortBy())){page.addOrder(new OrderItem(query.getSortBy(),query.getIsAsc()));}pageuserMapper.selectPage(page,null);Long pagespage.getPages();Long totalpage.getTotal();ListUser listpage.getRecords();PageVo pageVonew PageVo();pageVo.setPages(pages);pageVo.setTotal(total);pageVo.setList(list);if (CollUtil.isEmpty(list)){//没有数据直接返回return new PageVo(page.getTotal(),page.getPages(), Collections.emptyList());}else {//转换Vo的方法ListUserVo userVos BeanUtil.copyToList(list,UserVo.class);return new PageVo(page.getTotal(),page.getPages(), userVos);}}测试接口 localhost:8081/users/page{pageNo:1,pageSize:5,sortBy:username,isAsc:false }查询结果 {total: 100005,pages: 20001,list: [{id: 1674613593516396800,username: 赵天,info: {age: 20,intro: 伏地魔,gender: female},status: NORMAL,balance: 2000},{id: 1674613593516396800,username: 赵六99999,info: {age: 99999,intro: 99999伏地魔,gender: female},status: NORMAL,balance: 2000},{id: 1674613593516396800,username: 赵六99998,info: {age: 99998,intro: 99998伏地魔,gender: female},status: NORMAL,balance: 2000},{id: 1674613593516396800,username: 赵六99997,info: {age: 99997,intro: 99997伏地魔,gender: female},status: NORMAL,balance: 2000},{id: 1674613593516396800,username: 赵六99996,info: {age: 99996,intro: 99996伏地魔,gender: female},status: NORMAL,balance: 2000}] }但是此时的枚举不是我们需要的类型 {id: 2,username: Rose,info: {age: 19,intro: 青涩少女,gender: female},status: NORMAL,balance: 300},在原先的枚举类上加上对应的 JsonValue注解 //用户状态信息 AllArgsConstructor Getter public enum UserStatus {NORMAL(1,正常),FREEZE(2,冻结);EnumValueprivate final int value;JsonValueprivate final String desc; } 此时返回的内容就是下面的内容 此时把 JsonValue注解加载desc上 {id: 3,username: Hope,info: {age: 25,intro: 上进青年,gender: male},status: 正常,balance: 99800},要是在value上加上对应的注解的话返回的就是下面的格式的内容 //用户状态信息 AllArgsConstructor Getter public enum UserStatus {NORMAL(1,正常),FREEZE(2,冻结);EnumValueJsonValueprivate final int value; // JsonValueprivate final String desc; }{id: 1,username: Jack,info: {age: 20,intro: 佛系青年,gender: male},status: 2,balance: 0},4.3简化4.2操作 封装分页 publicT PageT getPage(String defaultSort, Boolean defaultIsAsc){//分页插件PageT pnew PageT(pageNo,pageSize);if (!StrUtil.isBlank(sortBy)){//排序条件p.addOrder(new OrderItem(sortBy,isAsc));}else { //可以不设置排序可以设置默认的排序//默认排序p.addOrder(new OrderItem(defaultSort,defaultIsAsc));}return p;}}
http://www.sczhlp.com/news/198412/

相关文章:

  • Wordpress网站删除多余主题电子公章印章在线制作
  • 1688网站特点山东大汉建设机械有限公司网站
  • 建设一个网站大概需要多久云南网站搭建
  • 网站教程wordpress+仿站步骤
  • C语言学习——运算符的学习
  • 2025年10月小程序开发公司最新推荐排行榜,小程序定制开发,电商小程序开发,预订服务小程序开发,活动报名小程序开发!
  • 复习CSharp
  • 网站竞价托管wordpress顶部图片大小
  • 深圳南山网站建设公司手机百度下载
  • 网站内容是什么Wordpress老是连接不上mysql
  • 购物商城网站的运营中国建设银行网站宁波
  • django网站开发源码有没有专门做印刷图的网站
  • 环保产品企业网站建设深圳网站建 1设骏域网站建设
  • 网站开发 会员模块国内建网站软件
  • 河南鑫安胜通建设有限公司网站中信建设有限责任公司ppp项目管理部总经理
  • 网站备案 厦门个人建设网站需要什么证件吗
  • 欧美只做les 网站装修网十大平台
  • 建设网站建设网页制作0402高设计词扫描件怎么能生成WordPress
  • 化学产品在哪个网站做推广最好网站空间免费的能用吗
  • 怎样把自己做的网站发到网上大作设计网站官网登录入口
  • wordpress调用 别的网站印刷 技术支持 东莞网站建设
  • 做公益网站的说明用html做网站代码
  • wordpress 虎嗅主题汕头seo公司
  • 网站如何优化一个关键词人力资源网站建设
  • 如何做网站销售忆达城市建设游戏网站
  • 高唐网站建设新手怎么引流推广
  • 许昌做网站汉狮网络学生制作个人网站
  • excel做网站链接唐山住房和城乡建设局网站
  • 五种常用的网站推广方法做简单网站怎么做
  • 网站反向绑定域名网络推广顾问是干嘛的