Spring Data JPA教程第一部分:配置

Spring Data JPA是一个旨在简化基于JPA的存储库的创建并减少与数据库通信所需的代码量的项目。 在我的工作和个人爱好项目中,我已经使用了一段时间,确实使事情变得更加简单和整洁。 现在是时候与您分享我的知识了。

这是我的Spring Data JPA教程的第一部分,它将向您介绍在将Hibernate用作JPA提供程序时如何配置Spring Data JPA。 在开始之前,我想弄清楚一件事:本教程不是Hibernate,JPA或Spring的入门级教程。 如果您想了解我的Spring Data JPA教程中描述的概念,那么您必须对这些技术有一定的经验。

本教程的依赖性如下:

  • BoneCP 0.7.1.RELEASE(您也可以使用其他数据源实现)
  • Hibernate 4.0.1.Final
  • Spring Framework 3.1.0。发布
  • Spring Data JPA 1.0.2
  • Servlet API 3.0

另外,由于我将Maven用作构建工具,因此如果要运行示例应用程序,则必须安装它。

入门

现在该开始了。 您可以按照以下步骤配置Spring Data JPA:

  • 您必须获得所需的依赖关系。
  • 您必须在Spring应用程序上下文配置中配置所需的bean。 Spring Data JPA所需的bean是:数据源,事务管理器和实体管理器工厂。
  • 您必须配置Spring Data JPA。

以下将详细解释这些步骤:

获得所需的辅佐

首先,您需要获取所需的依赖关系。 您可以通过在pom.xml文件中配置所需的依赖项来实现。 我的示例的pom.xml看起来如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.petrikainulainen.spring</groupId><artifactId>data-jpa-tutorial-part-one</artifactId><packaging>war</packaging><version>0.1</version><name>Spring Data JPA Tutorial Part One</name><description>Spring Data JPA Tutorial Part One</description><licenses><license><name>Apache License 2.0</name><url>http://www.apache.org/licenses/LICENSE-2.0</url></license></licenses><url>http://www.petrikainulainen.net</url><repositories><repository><id>repository.jboss.org-public</id><name>JBoss repository</name><url>https://repository.jboss.org/nexus/content/groups/public</url></repository></repositories><properties><hibernate.version>4.0.1.Final</hibernate.version><mysql.connector.version>5.1.18</mysql.connector.version><slf4j.version>1.6.1</slf4j.version><spring.version>3.1.0.RELEASE</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Framework --><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- Spring MVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</version></dependency><!-- Spring Data JPA --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.0.2.RELEASE</version></dependency><!-- Hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>${hibernate.version}</version></dependency><!-- H2 Database --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.3.160</version></dependency><!-- MySQL JDBC connector --><!-- If you want to use MySQL, uncomment this dependency declation. --><!--<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.connector.version}</version></dependency>--><!-- PostgreSQL JDBC 4 --><!-- If you don't want to use PostgreSQL, uncomment this dependency declaration. --><!--<dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId><version>9.0-801.jdbc4</version></dependency>--><!-- BoneCP --><dependency><groupId>com.jolbox</groupId><artifactId>bonecp</artifactId><version>0.7.1.RELEASE</version></dependency><!-- Servlet API 3.0 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- Logging dependencies --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><!-- Testing Dependencies --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency></dependencies><build><finalName>data-jpa-tutorial-part-one</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.1.1</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.0.RC2</version><configuration><scanIntervalSeconds>0</scanIntervalSeconds><webAppConfig><defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor></webAppConfig></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>3.0</version><configuration><reportPlugins><!-- Cobertura Plugin --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><version>2.5.1</version></plugin></reportPlugins></configuration></plugin></plugins></build>
</project>

配置Spring应用程序上下文

其次,您必须配置Spring应用程序上下文。 您可能还记得,您需要配置数据源,事务管理器和实体管理器工厂bean。 如果您使用的是Spring 3.1和Servlet 3.0,则可以通过实现Java配置类并将该配置类加载到Web应用程序初始化程序中来实现。 我的应用程序上下文配置类的内容如下:

import com.jolbox.bonecp.BoneCPDataSource;
import org.hibernate.ejb.HibernatePersistence;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.*;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.core.env.Environment;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;import javax.annotation.Resource;
import javax.sql.DataSource;/*** An application context Java configuration class. The usage of Java configuration* requires Spring Framework 3.0 or higher with following exceptions:* <ul>*     <li>@EnableWebMvc annotation requires Spring Framework 3.1</li>* </ul>* @author Petri Kainulainen*/
@Configuration
@ComponentScan(basePackages = {"net.petrikainulainen.spring.datajpa.controller"})
@EnableWebMvc
@ImportResource("classpath:applicationContext.xml")
@PropertySource("classpath:application.properties")
public class ApplicationContext {private static final String VIEW_RESOLVER_PREFIX = "/WEB-INF/jsp/";private static final String VIEW_RESOLVER_SUFFIX = ".jsp";private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";private static final String PROPERTY_NAME_DATABASE_URL = "db.url";private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";private static final String PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY = "hibernate.ejb.naming_strategy";private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";private static final String PROPERTY_NAME_MESSAGESOURCE_BASENAME = "message.source.basename";private static final String PROPERTY_NAME_MESSAGESOURCE_USE_CODE_AS_DEFAULT_MESSAGE = "message.source.use.code.as.default.message";@Resourceprivate Environment environment;@Beanpublic DataSource dataSource() {BoneCPDataSource dataSource = new BoneCPDataSource();dataSource.setDriverClass(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));dataSource.setJdbcUrl(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));dataSource.setUsername(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));dataSource.setPassword(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));return dataSource;}@Beanpublic JpaTransactionManager transactionManager() throws ClassNotFoundException {JpaTransactionManager transactionManager = new JpaTransactionManager();transactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject());return transactionManager;}@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException {LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();entityManagerFactoryBean.setDataSource(dataSource());entityManagerFactoryBean.setPackagesToScan(
environment.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class);Properties jpaProterties = new Properties();jpaProterties.put(PROPERTY_NAME_HIBERNATE_DIALECT, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));jpaProterties.put(PROPERTY_NAME_HIBERNATE_FORMAT_SQL, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_FORMAT_SQL));jpaProterties.put(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY));jpaProterties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));entityManagerFactoryBean.setJpaProperties(jpaProterties);return entityManagerFactoryBean;}@Beanpublic MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();messageSource.setBasename(
environment.getRequiredProperty(PROPERTY_NAME_MESSAGESOURCE_BASENAME));messageSource.setUseCodeAsDefaultMessage(
Boolean.parseBoolean(
environment.getRequiredProperty(PROPERTY_NAME_MESSAGESOURCE_USE_CODE_AS_DEFAULT_MESSAGE)));return messageSource;}@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setViewClass(JstlView.class);viewResolver.setPrefix(VIEW_RESOLVER_PREFIX);viewResolver.setSuffix(VIEW_RESOLVER_SUFFIX);return viewResolver;}
}

我的Web应用程序初始化程序如下所示:

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.*;/*** Web application Java configuration class. The usage of web application* initializer requires Spring Framework 3.1 and Servlet 3.0.* @author Petri Kainulainen*/
public class DataJPAExampleInitializer implements WebApplicationInitializer {private static final String DISPATCHER_SERVLET_NAME = "dispatcher";private static final String DISPATCHER_SERVLET_MAPPING = "/";@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();rootContext.register(ApplicationContext.class);ServletRegistration.Dynamic dispatcher = servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(rootContext));dispatcher.setLoadOnStartup(1);dispatcher.addMapping(DISPATCHER_SERVLET_MAPPING);servletContext.addListener(new ContextLoaderListener(rootContext));}
}

您可能已经注意到,我使用@PropertySource批注指定属性文件的位置,该文​​件包含使用的配置参数的值。 我的application.properties文件的内容如下:

# The default database is H2 memory database but I have also
# added configuration needed to use either MySQL and PostgreSQL.#Database Configuration
db.driver=org.h2.Driver
#db.driver=com.mysql.jdbc.Driver
#db.driver=org.postgresql.Driver
db.url=jdbc:h2:mem:datajpa
#db.url=jdbc:mysql://localhost:3306/datajpa
#db.url=jdbc:postgresql://localhost/datajpa
db.username=sa
db.password=#Hibernate Configuration
hibernate.dialect=org.hibernate.dialect.H2Dialect
#hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
#hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.format_sql=true
hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
hibernate.show_sql=true#MessageSource
message.source.basename=i18n/messages
message.source.use.code.as.default.message=true#EntityManager
#Declares the base package of the entity classes
entitymanager.packages.to.scan=net.petrikainulainen.spring.datajpa.model

配置Spring Data JPA

第三,您必须配置Spring Data JPA。 如果您关注的话,您可能已经注意到,我在应用程序上下文配置类中使用@ImportResource批注从XML配置文件中导入其他配置。 目前,Spring Data JPA不支持Java配置。 因此,配置它的唯一方法是使用XML配置文件。 我的pplicationContext.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:jpa="http://www.springframework.org/schema/data/jpa"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/data/jpahttp://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"><!--Configures the location of static resources such as css files.Requires Spring Framework 3.0 or higher.--><mvc:resources mapping="/static/**" location="/static/"/><!--Ensures that dispatcher servlet can be mapped to '/' and static resourcesare still served by the containers default servlet. Requires Spring Framework3.0 or higher.--><mvc:default-servlet-handler/><!--Configures Spring Data JPA and sets the base package of my DAOs.--><jpa:repositories base-package="net.petrikainulainen.spring.datajpa.repository"/>
</beans>

你做完了

这就对了。 我现在已经向您展示了如何配置Spring Data JPA。 我还创建了一个示例应用程序,以演示此配置确实有效。 您可以通过从Github获取示例应用程序并使用Maven Jetty插件运行示例Web应用程序来自己测试配置( 注意 :请记住首先创建模型存储库包。 因为无法向Git添加空目录临时区域 ,Github存储库也没有)。

我的Spring Data JPA教程的第二部分描述了如何使用Spring Data JPA创建一个简单的CRUD Web应用程序。 敬请关注。

参考: Spring Data JPA教程第一部分:来自Petri Kainulainen博客的JCG合作伙伴 Petri Kainulainen的配置 。

翻译自: https://www.javacodegeeks.com/2013/07/spring-data-jpa-tutorial-part-one-configuration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018-03-02

1、首先我得重新在git设置一下身份的名字和邮箱&#xff08;因为当初都忘了设置啥了&#xff0c;因为遇到坑了&#xff09;进入到需要提交的文件夹底下&#xff08;因为直接打开git Bash&#xff0c;在没有路径的情况下&#xff0c;根本没&#xff01;法&#xff01;改&#xf…

《算法通关村——再次透彻理解动态规划》

《算法通关村——透彻理解动态规划》 91. 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; A -> "1" B -> "2" ... Z -> "26"要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反…

html5新特性:异步上传文件

<!DOCTYPE html><html><head><meta charset"utf-8"/><title>html5文件上传</title></head><body><input type"file" name"file" id"file" /><br/><input type"s…

查看环境变量有无配置成功等命令操作

查看环境变量有无配置成功 &#xff1a;windowR cmd set&#xff08;回车&#xff09; 现在可以看到配置成功的环境变量NVM_HOME NVM_SYMLINK等环境变量 也可以单独查看某个变量有无配置成功,例如set NVM—HOME. 转载于:https://www.cnblogs.com/JavascriptAndHtml5/p/9469932…

WildFly 8.0.0.Alpha1的发布和一些历史

自从我们发布WildFly 8.0.0.Alpha1版本以来&#xff0c; 已经过去了大约2周。 该下载位于WildFly下载页面上 。 我敢肯定&#xff0c;你们中的许多人可能会想知道WildFly是什么&#xff0c;而其中一些知道它是什么的人可能不会知道已经发布了。 我将尝试回答其中一些问题&#…

mysql中字典值怎么添加_插入Python字典中的值,包括MySQL的键

我有以下字典&#xff1a;{ : [0, 9],3904: [playback_error, 87],3808: [playback_error, 24],3902: [qp_library_failed_to_start, 1],3903: [playback_error, 464],3805: [playback_error, 141],3807: [playback_error, 29],3806: [playback_error, 1],1309: [playback_erro…

Redis是单线程的

Redis是单线程的 学习了&#xff1a; http://blog.csdn.net/liupeng_qwert/article/details/77263187 https://www.cnblogs.com/syyong/p/6231326.html 这个膜拜一下 https://www.cnblogs.com/yuyutianxia/p/6346723.html http://blog.csdn.net/qqqqq1993qqqqq/article/detail…

POJ 1276 Cash Machine

很容易看出来是一个背包问题&#xff0c;开始把每一张钞票都跑了一遍01背包&#xff0c;直接TLE了。 其实就是多重背包模板题。 1 //#include <bits/stdc.h>2 #include <iostream>3 #include <utility>4 #include <vector>5 #include <cstring>6…

Html5结合JS实现浏览器全屏功能

项目中需要将后台浏览器的窗口全屏&#xff0c;也就是我们点击一个按钮要实现按F11全屏的效果。 在HTML5中,W3C制定了关于全屏的API&#xff0c;就可以实现全屏幕的效果&#xff0c;也可以让页面中的图片&#xff0c;视频等全屏目前只有google chrome 15 , safri5.1 ,firfox10 …

Spring @Bean和PropertyPlaceHolderConfigurer

最近&#xff0c;我被我认为将是一个相当简单的实现所困扰-考虑以下基于Spring Java的bean定义文件&#xff08; Configuration &#xff09;&#xff1a; package root;...Configuration PropertySource("classpath:root/test.props") public class SampleConfig …

导出mysql excel数据字典_mysql导出 Excel数据字典(全)

解决问题(有mysql数据库数据表想要将表导入到PowerDesigner 或导出Excel数据字典)一、下载工具1、工具PowerDesigner 百度自行下载安装2、mysql-connector-odbc 下载链接: https://pan.baidu.com/s/1cjb73f3GvkkMFAzZKi85xA 提取码: u5ih二、mysql数据库数据表想要将表导入到Po…

斐波那契数列算法小结

关于求解斐波那契数列&#xff0c;这是一道比较经典的题目&#xff0c;本文主要是对斐波那契数列求解方法的小结。 首先&#xff0c;定义Fibonacci数列如下&#xff1a; 方法1&#xff1a; 利用递归求解&#xff0c;这是最容易写出的算法&#xff0c;代码如下&#xff1a; #inc…

模块(sys/os/序列化模块)

sys 模块: sys.path 返回模块的搜索路径,初始化时使用pythonpath环境变量的值 sys.modules 返回所有在当前这个python程序中导入的模块的 sys.exit 退出程序 sys.argv 返回一个列表 列表的第一个元素是执行这个文件的时候,写在python后面的第一个值, 之后的元素是在执行…

JPA 2 | 获取联接以及我们是否应该使用它们

介绍 最近&#xff0c;我一直在与JPA 2中的FETCH JOINS一起使用&#xff0c;以期从数据库中急切地获取数据&#xff0c;并且我学到了很多关于为什么在日常操作中应避免使用Fetch Joins的知识。 今天的博客文章谈论了我在Fetch上的经历和学习&#xff08;主要基于当我在查询中有…

mysql yintint类型_MySQL服务器2 被嫌弃的胖子

1.sql的基本语法对数据库create database db1;  创建数据库对表&#xff1a;create database t1(id int,name char(10));  创建表show create table t1;  查看创建的t1表show tables;  查看所有的表desc t1;  查看表的详细结构对数据&#xff1a;insert into t1(id,n…

Html5表单元素-搜索框和上传文件框

1、search - 搜索框element/form/input/search.html<!doctype html><html><head> <title>search</title></head><body> <!-- search - 搜索框&#xff0c;文本框形式 --> <input type"search"…

Shell 简单的java微服务jar包 -- 部署脚本

部署描述&#xff1a; 1.jenkins 通过maven编译成jar 项目包 2.shell 脚本从jenkins机器发布到&#xff1a;目标主机 注释&#xff1a;次脚本没有写jar包的备份&#xff0c;有时间加上 脚本内容&#xff1a; #!/bin/bash#线上服务器列表 HOST_LIST${:2}#项目名 REMOTE_PROJECT$…

BZOJ 4552 [Tjoi2016Heoi2016]排序 | 二分答案 线段树

题目链接 题面 题目描述 在2016年&#xff0c;佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题&#xff0c;现在他在研究一个难题&#xff0c;需要你来帮助他。这个难题是这样子的&#xff1a;给出一个1到n的全排列&#xff0c;现在对这个全排列序列进行…

python import 类 继承_python学习之类的继承

面向对象中一个重要的特性就是继承&#xff0c;继承的好处就是提高代码的重用率&#xff0c;减少不必要的代码。继承是父类与子类的关系&#xff0c;当子类继承了父类后&#xff0c;就具有了父类的所有变量和方法。在python中定义继承的语法是&#xff1a;class 派生类名(基类名…

Html5画布(canvas)实例之绘制矩形

路径方式绘制 - 矩形 | rect()canvas/shape/path/rect.html <!DOCTYPE HTML><html><head> <title>以路径的方式在 canvas 上绘制矩形的 demo</title></head><body> <canvas id"canvas" width"300" hei…