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

做淘宝客网站能接广告吗公司网站建设方案ppt

做淘宝客网站能接广告吗,公司网站建设方案ppt,百度快照查询入口,广西网红排名前20名文章目录 一、Spring Data JPA 简介二、Spring Data JPA 与 MyBatis Plus 比较设计哲学和抽象层次SQL 控制学习曲线和技术要求性能与优化综合考虑 三、SpringDataJpa实战演练1. 创建user表2. 搭建Spring Boot开发环境3. pom.xml文件内容4. application.yml文件内容5. Applicati… 文章目录 一、Spring Data JPA 简介二、Spring Data JPA 与 MyBatis Plus 比较设计哲学和抽象层次SQL 控制学习曲线和技术要求性能与优化综合考虑 三、SpringDataJpa实战演练1. 创建user表2. 搭建Spring Boot开发环境3. pom.xml文件内容4. application.yml文件内容5. Application.java6. Result.java7. User.java8. UserRepository.java9. UserService.java10. UserController.java 一、Spring Data JPA 简介 Spring Data JPA 是 Spring 框架中的一个模块它旨在简化 Java Persistence API (JPA) 的使用进而简化数据访问层的开发。JPA 是 Java 平台上用于管理关系数据库的对象关系映射(ORM)的标准。而 Spring Data JPA 在此基础之上提供了额外的抽象层允许开发者以更简洁的方式编写数据访问代码无需手动编写大量的实现代码。 核心特点包括 简化 CRUD 操作通过继承 JpaRepository 或其他 Spring Data 提供的接口你可以直接在自定义的 Repository 接口中声明方法而无需编写实现。Spring Data JPA 会根据方法名自动生成查询语句。 方法命名查询依据一定的命名规则Spring Data JPA 能够根据 Repository 接口中的方法名称自动生成 SQL 或 HQL 查询语句例如 findByUsernameAndPassword 会自动转换为寻找匹配用户名和密码的查询。 查询DSL除了方法命名查询它还提供了强大的查询dsl领域特定语言允许构建类型安全的复杂查询。 分页与排序轻松实现数据的分页查询和排序功能。 事务管理集成 Spring 的事务管理使得数据操作更加安全可靠。 动态查询支持 Criteria API 和 Specifications可以构建复杂的动态查询条件。 减少样板代码大量减少了传统 JPA 开发中需要编写的 DAO 层实现代码提高开发效率。 扩展性虽然提供了很多开箱即用的功能但同时也允许开发者自定义查询逻辑保持了高度的灵活性。 通过这些特性Spring Data JPA 成为了快速开发 Java 应用特别是那些需要与关系型数据库交互的应用的首选框架之一。开发者只需关注业务逻辑而不必过多担忧数据访问层的细节。 二、Spring Data JPA 与 MyBatis Plus 比较 Spring Data JPA 和 MyBatis Plus 是两种不同的持久层框架它们各有特色适用于不同场景和需求。以下是它们之间的一些关键区别 设计哲学和抽象层次 Spring Data JPA 基于 JPA 规范提供了高度抽象的数据访问层允许开发者以面向对象的方式操作数据库减少了直接编写 SQL 的需要。它通过方法命名约定来自动生成查询支持实体映射和事务管理更适合那些希望快速开发、遵循 Java EE 标准且偏好 ORM对象关系映射的项目。 MyBatis Plus 则是对 MyBatis 的增强它依然保留了 MyBatis 手动编写 SQL 的灵活性同时加入了许多开箱即用的功能如常见的 CRUD 操作、分页、性能优化等。MyBatis Plus 更加适合需要高度定制 SQL 查询、对性能有严格要求或者需要直接控制 SQL 执行的场景。 SQL 控制 Spring Data JPA 主要通过方法命名约定来自动生成 SQL虽然也支持 Query 注解来自定义 SQL但其强项在于无须编写 SQL 即可完成大部分 CRUD 操作。 MyBatis Plus 支持 SQL 的完全自定义这为开发者提供了更大的灵活性特别是在处理复杂的联表查询和性能优化时更为明显。它还提供了 MapKey 注解等特性便于在多表关联查询中进行数据关联。 学习曲线和技术要求 Spring Data JPA 因其高度抽象初学者可能更容易上手但深入理解和调试 ORM 映射问题可能需要更多专业知识。 MyBatis Plus 虽然需要手动编写 SQL但对 SQL 较熟悉的开发者可能会觉得这种方式更直接、可控学习成本相对较低尤其是在已有 MyBatis 使用经验的基础上。 性能与优化 Spring Data JPA及底层的 Hibernate由于其抽象层次较高可能会在某些简单查询上略逊于直接编写 SQL 的框架。但它提供了缓存管理、延迟加载等特性对提高整体应用性能有帮助。 MyBatis Plus 直接控制 SQL因此在查询优化和性能调优上有更多空间特别是对于复杂的查询场景能够通过精确控制 SQL 来达到更好的性能。 综合考虑 选择 Spring Data JPA 还是 MyBatis Plus通常取决于项目的需求、团队的技术栈偏好以及对 SQL 控制的需求程度。如果项目追求快速开发、代码的简洁性且对 SQL 的直接控制需求不高Spring Data JPA 是个不错的选择。相反如果项目需要复杂的 SQL 查询、高度的性能优化或者团队更倾向于 SQL 的直接操控MyBatis Plus 可能更加合适。在实际应用中两者并非互斥根据具体模块的需求混合使用也是常见做法。 三、SpringDataJpa实战演练 1. 创建user表 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(50) DEFAULT NULL,age int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT130 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci2. 搭建Spring Boot开发环境 目录结构如下 springboot-template-jpa │ pom.xml │ springboot-template-jpa.iml │ ├─src │ └─main │ ├─java │ │ └─com │ │ └─zcs │ │ │ Application.java │ │ │ │ │ ├─common │ │ │ Result.java │ │ │ │ │ ├─config │ │ ├─controller │ │ │ UserController.java │ │ │ │ │ ├─domain │ │ ├─entity │ │ │ User.java │ │ │ │ │ ├─mapper │ │ ├─repository │ │ │ UserRepository.java │ │ │ │ │ ├─service │ │ │ UserService.java │ │ │ │ │ └─utils │ └─resources │ application.yml3. pom.xml文件内容 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.15/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.zcs/groupIdartifactIdspringboot-template-jpa/artifactIdversion1.0.0/versionnamespringboot-template/namedescriptionspringboot-template/descriptionpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency!-- 引入Spring Boot Actuator的起步依赖用于监控和管理生产环境中的应用程序 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion4.3.0/version/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.3.1/version/dependency!-- 数据库驱动例如MySQL --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.15/versionscoperuntime/scope/dependency!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 --dependencygroupIdcom.oracle.database.jdbc/groupIdartifactIdojdbc8/artifactIdversion21.5.0.0/version/dependency!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc --dependencygroupIdcom.microsoft.sqlserver/groupIdartifactIdmssql-jdbc/artifactIdversion9.4.1.jre8/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.0/version/dependencydependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.7/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter-test/artifactIdversion2.3.1/versionscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationincludeSystemScopetrue/includeSystemScopeexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins/build/project4. application.yml文件内容 server:port: 8090 --- spring:web:resources:static-locations: classpath:/static/datasource:dynamic:primary: master # 设置默认数据源strict: false # 设置严格模式true则未匹配到数据源时抛异常false则使用默认数据源datasource:master: # 池名称url: jdbc:mysql://192.168.145.103:3306/test?useSSLfalseuseUnicodetruecharacterEncodingUTF-8username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverdruid:validation-query: select 1 --- mybatis:configuration:map-underscore-to-camel-case: true # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl --- # 开启所有Actuator的端点暴露以便可以通过HTTP进行访问 management:endpoints:web:exposure:include: *# 配置健康端点的详细程度always表示总是显示完整的健康信息endpoint:health:show-details: always5. Application.java package com.zcs;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }6. Result.java package com.zcs.common;import lombok.Data;Data public class ResultT {private int code;private int success;private String msg;private T data;public Result(int code, String msg, int success) {this.code code;this.msg msg;this.success success;}public Result(int code, String msg, int success, T data) {this.code code;this.msg msg;this.success success;this.data data;}public static T ResultT success() {return new Result(200, , 0);}public static T ResultT success(String msg) {return new Result(200, msg, 0);}public static T ResultT success(String msg, T data) {return new Result(200, msg, 0, data);}public static T ResultT error(int code, String message) {return new Result(code, message, -1);}public static T ResultT error(int code, String message, T data) {return new Result(code, message, -1, data);} }7. User.java package com.zcs.entity;import lombok.Data;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;Data Entity public class User {IdGeneratedValue(strategy GenerationType.IDENTITY)private Integer id;private String name;private Integer age; }8. UserRepository.java package com.zcs.repository;import com.zcs.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository;Mapper Repository public interface UserRepository extends JpaRepositoryUser, Integer {Select(SELECT * FROM user WHERE id #{id})User getUserById(Integer id);}9. UserService.java package com.zcs.service;import com.zcs.entity.User; import com.zcs.repository.UserRepository; import org.springframework.data.domain.*; import org.springframework.data.repository.query.FluentQuery; import org.springframework.stereotype.Service;import javax.annotation.Resource; import java.nio.file.DirectoryStream; import java.util.List; import java.util.Optional; import java.util.function.Function;Service public class UserService {Resourceprivate UserRepository userRepository;public ListUser getAllUsers() {return userRepository.findAll();}public ListUser getAllUsersByIds(ListInteger ids) {return userRepository.findAllById(ids);}public User getUserById(Integer id) {return userRepository.getUserById(id);}public User insertOrUpdateUser(User user) {return userRepository.save(user);}public User insertOrUpdateAndFlushUser(User user) {return userRepository.saveAndFlush(user);}public String deleteById(Integer id) {boolean b userRepository.existsById(id);if (b) {userRepository.deleteById(id);return 数据删除成功;}return 要删除的数据不存在;}public boolean existsById(Integer id) {return userRepository.existsById(id);}public OptionalUser findOne(String name) {User probeUser new User(); // 假设User类有name属性probeUser.setName(name); // 设置你想查询的名字// 创建一个ExampleMatcher来定义匹配规则例如忽略大小写等ExampleMatcher matcher ExampleMatcher.matching().withIgnoreCase() // 忽略属性比较时的大小写.withStringMatcher(ExampleMatcher.StringMatcher.EXACT); // 使用contains方式匹配字符串// 创建Example实例ExampleUser example Example.of(probeUser, matcher);FunctionFluentQuery.FetchableFluentQueryUser, OptionalUser one FluentQuery.FetchableFluentQuery::first;// 使用findOne方法根据example查询return userRepository.findBy(example, one);}public OptionalUser getUserByName(String name) {User probeUser new User(); // 假设User类有name属性probeUser.setName(name); // 设置你想查询的名字ExampleMatcher matcher ExampleMatcher.matching().withIgnoreCase() // 忽略大小写匹配.withStringMatcher(ExampleMatcher.StringMatcher.EXACT); // 精确匹配ExampleUser example Example.of(probeUser, matcher);FunctionFluentQuery.FetchableFluentQueryUser, OptionalUser queryFunction FluentQuery.FetchableFluentQuery::first;return userRepository.findBy(example, queryFunction);}public ListUser getAllUserByName(String name) {User probeUser new User(); // 假设User类有name属性probeUser.setName(name); // 设置你想查询的名字ExampleMatcher matcher ExampleMatcher.matching().withIgnoreCase() // 忽略大小写匹配.withStringMatcher(ExampleMatcher.StringMatcher.EXACT); // 精确匹配ExampleUser example Example.of(probeUser, matcher);FunctionFluentQuery.FetchableFluentQueryUser, ListUser all FluentQuery.FetchableFluentQuery::all;return userRepository.findBy(example, all);}public ListUser getAllUserByNameAndAge(String name, Integer age) {User probeUser new User(); // 假设User类有name属性probeUser.setName(name); // 设置你想查询的名字probeUser.setAge(age); // 设置你想查询的名字ExampleMatcher matcher ExampleMatcher.matching().withIgnoreCase() // 忽略大小写匹配.withStringMatcher(ExampleMatcher.StringMatcher.EXACT); // 精确匹配ExampleUser example Example.of(probeUser, matcher);// FunctionFluentQuery.FetchableFluentQueryUser, OptionalUser queryFunction query - query.one();FunctionFluentQuery.FetchableFluentQueryUser, ListUser all FluentQuery.FetchableFluentQuery::all;// FunctionFluentQuery.FetchableFluentQueryUser, StreamUser stream FluentQuery.FetchableFluentQuery::stream;return userRepository.findBy(example, all);}public PageUser getUsers(int pageNumber, int pageSize) {// 创建Pageable对象参数分别是页码从0开始和页面大小Pageable pageable PageRequest.of(pageNumber, pageSize);// 调用findAll方法传入Pageable对象进行分页查询return userRepository.findAll(pageable);} }10. UserController.java package com.zcs.controller;import com.zcs.common.Result; import com.zcs.entity.User; import com.zcs.repository.UserRepository; import com.zcs.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.*;import javax.annotation.Resource; import java.util.List; import java.util.Optional;Slf4j RestController RequestMapping(/users) public class UserController {Resourceprivate UserRepository userRepository;Resourceprivate UserService userService;GetMappingpublic ListUser getAllUsers() {return userService.getAllUsers();}// 根据id查询userGetMapping(/{id})public ResultUser getById(PathVariable Integer id) {User user userRepository.findById(id).get();return Result.success(success, user);}// 查询user表的行数GetMapping(/count)public ResultLong count() {long count userRepository.count();return Result.success(success, count);}// 根据name查询匹配到的第一条数据GetMapping(/findOne)public ResultOptionalUser findOne(RequestParam String name) {OptionalUser userServiceOne userService.findOne(name);return Result.success(success, userServiceOne);}// 根据id列表用逗号分隔查询userGetMapping(/ids/{ids})public ResultListUser getAllUsersByIds(PathVariable ListInteger ids) {ListUser allUsersByIds userService.getAllUsersByIds(ids);return Result.success(success, allUsersByIds);}// 根据id查询userGetMapping(/id/{id})public ResultUser getUserById(PathVariable Integer id) {User userById userService.getUserById(id);return Result.success(success, userById);}// 根据name查询user匹配到的第一个数据GetMapping(/getUserByName)public ResultOptionalUser getUserByName(RequestParam String name) {OptionalUser userByName userService.getUserByName(name);return Result.success(success, userByName);}// 根据name查询匹配到的所有userGetMapping(/getAllUserByName)public ResultListUser getAllUserByName(RequestParam String name) {ListUser allUserByName userService.getAllUserByName(name);return Result.success(success, allUserByName);}// 根据name和age查询匹配到的所有userGetMapping(/getAllUserByNameAndAge)public ResultListUser getAllUserByNameAndAge(RequestParam String name, RequestParam Integer age) {ListUser allUserByName userService.getAllUserByNameAndAge(name, age);return Result.success(success, allUserByName);}// 根据id查询数据是否存在GetMapping(/exists/{id})public ResultBoolean existsById(PathVariable Integer id) {boolean b userService.existsById(id);return Result.success(success, b);}// 插入或更新userPostMappingpublic ResultUser insertOrUpdateUser(RequestBody User user) {User user1 userService.insertOrUpdateUser(user);return Result.success(success, user1);}// 插入或更新user且刷新PutMappingpublic ResultUser insertOrUpdateAndFlushUser(RequestBody User user) {User user1 userService.insertOrUpdateAndFlushUser(user);return Result.success(success, user1);}// 根据id删除数据DeleteMapping(/{id})public ResultString deleteById(PathVariable Integer id) {String string userService.deleteById(id);return Result.success(success, string);}// 分页查询GetMapping(/page)public ResultPageUser getUsersByPage(RequestParam int pageNumber, RequestParam(defaultValue 10) int pageSize) {PageUser users userService.getUsers(pageNumber, pageSize);return Result.success(success, users);}}
http://www.dnsts.com.cn/news/52863.html

相关文章:

  • 门户类网站图片wordpress 用户注册插件
  • 网站建设和使用现状wordpress编辑邮箱内容
  • 网站建设信息表wordpress设置多站点
  • 南通制作企业网站交通运输部: 优化交通运输领域防控
  • 台州新农村建设网站哪些网站可以上传自己做的视频
  • 西部数码网站备份东莞最好的网站建设价格低
  • 电子商务网站开发教程论文6网站建设横幅
  • 有什么网站可以接单做兼职的大连优化排名推广
  • 墙绘做网站哪家好自己怎么设计公司标志
  • 学校网站管理系统基础做网站
  • 网站开发有哪些参考文献高校网站建设招标公告
  • 用html做女装网站网站建设需要哪种人才
  • 四川省住房与城乡建设 厅网站绿色wordpress主题模板下载
  • 网站不能写入php文件免费行情网站app下载大全
  • 如何提高网站收录量惠东网站设计
  • 做网站必要吗安徽六安金寨县
  • 网站建设和程序开发哪个好海口建站软件
  • 中卫网站推广优化公司做商城购物网站
  • 进贤网站建设网站建设尾款放在什么科目里
  • 给公司建网站 深圳唐山 网站建设
  • 网站的建设方式有哪些网站备案 几年
  • 手机版网站设计风格宜昌微网站建设
  • 网站广告源码免费表白网页在线生成制作
  • 哪类小网站容易做鹿泉建设网站
  • 三网合一网站建设合同微信小程序怎么上架商品
  • 做明星网站打广告购物网站怎么做推广
  • 做科学小制作的视频网站找装修公司的网站
  • 如何seo网站外贸如何推广公司网站
  • 长春seo技术seo关键词优化排名外包
  • 微信端网站开发流程图网站建设申请报告怎么写