实体类

15、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

ぐ巨炮叔叔 提交于 2019-12-01 04:49:44
接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的main方法。 问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数。 答案很明确,可以继承。其实从Object就是个实体类, Java 的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。 关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。 一般学习者会写的简单试验代码: class A{} abstract class B extends A{} 结果完全正常,编译通过。似乎和“实体类必须有明确的构造函数”完全没有关系。 这个问题涉及到两个个基础知识: 1. 所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。 2.所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造器。 所以,如果把系统默认配给的方法也算进去,class A{}的代码实际上是 class A{ public A(){} } B继承 A 的时候,则是 abstract class

SpringDataJpa_day01()

百般思念 提交于 2019-12-01 01:42:40
一.orm思想   (1)     简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的。   (2)对象关系映射(Object Relational Mapping)     *实体类和表对应关系     *实体类属性和表字段对应关系   (3)不再关注具体的sql语句   (4)实现类ORM的框架:Mybatis,Hibernae 二.hibernate框架   (1)Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框  架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。   (2)jpa规范比HIbernate更好 三.jpa规范   (1)     JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范,内部是由一系列的接口和抽象类构成。     JPA通过JDK 5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 四.jpa基本操作   (1)搭建环境     *导入maven坐标     *配置jpa核心配置文件       *配置到类路径的META-INF文件夹下

hibernate框架的简单入门

元气小坏坏 提交于 2019-11-30 20:47:59
1.什么是框架 框架是一个半成品,框架帮我们实现了一部分的功能。 2.使用框架的最大好处 使用框架的最大好处就是,少写一部分代码但仍能实现我们所需要实现的功能。 3.什么是hiberbnate框架 (1)hibernate框架应用在javaEE三层结构中的dao层框架 (2)hibernate底层的代码就是jdbc,hibernate就是对jdbc的封装,使用hibernate就不需要写jdbc复杂的代码了,而且可以不写sql语句,就能实现对数据库的基本的,增,删,改,查。 (3)hibernate是轻量级的框架。 4.hibernate的思想 (1) hibernate使用 orm思想对数据库进行增,删,改,查。 (2)什么是orm思想? orm:object relational mapping 对象关系映射,让实体类和数据库的表进行对应,也就是实体类中的属性与数据库中表的列进行一一的对应。且实体类的名称与数据库的表名对应。 这样我们就可也不需要对数据库中的表进行操作,而是直接对实体类对象进行操作,再映射到数据库的表中,从而达到对数据库表的操作。 5.搭建hibernate环境 (1)导入所需jar包。 (2)创建实体类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

c#三层架构

こ雲淡風輕ζ 提交于 2019-11-30 20:07:01
三层架构:界面层UI+业务逻辑层BLL+数据访问层DAL 好处:使系统结构清晰,降低复杂度,便于维护。(高内聚,低耦合) 注:不要为了分层而分层,要根据实际开发情况制作最适合的层级关系,而不是强行套用三层架构。在分层设计时,最好遵循面向接口的设计思想,在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。 Common Library:通用类库,工具类,为各层提供通用的工具(类)。 Model:业务实体,可以理解为传递在各个层间的数据,它贯穿于整个架构,只不过它存储的是复杂的数据,如Model层里的一个类对应数据库里的一张表,类里面的每个属性都对应表里的每个字段。 User Interface Layer:界面层,只负责显示和采集用户操作,不包含任何业务相关的逻辑处理 Buisness Logic Layer:业务逻辑层,通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源时,直接交给DAL进行处理,完成后返回数据给UI层。 Data Access Layer:数据访问层,只提供基本的数据访问,不包含任何的业务逻辑。 PS:实践项目中,一般是先添加实体类,然后再增加数据访问类,和其他业务类。   数据访问类命名:实体类名称+Service 业务逻辑类命名:实体类名称+Manager 来源: https://www.cnblogs.com

struts2入门

让人想犯罪 __ 提交于 2019-11-30 18:01:26
1. struts2 Action获取表单提交数据 主要有三种方式: 1.1 使用ActionContext类 //获取actionContext对象 ActionContext context = ActionContext.getContext(); Map<String, Object> map = context.getParameters(); Set<String> keys = map.keySet(); for (String key : keys) { Object[] obj = (Object[]) map.get(key); //数组形式:因为输入项里面可能有复选框的情况 System.out.println(Arrays.toString(obj)); } View Code 1.2. 使用ServletActionContext类 HttpServletRequest request = ServletActionContext.getRequest(); String username = request.getParameter("username"); View Code 1.3. 使用接口注入方式 public class LoginAction extends ActionSupport implements

乐优商城项目总结day(7)

好久不见. 提交于 2019-11-30 16:08:40
乐优商城项目总结day(7) 1.mapper-spring-boot-starter(通用mapper)的使用 1.1.实体类 实体类上加上 javax.persistence 包下 @Table 注解用来指定表名,表的主键字段使用 javax.persistence 包下 @Id 注解, @KeySql 是通用mapper中用来指定主键自增长策略。 1.2.dao层 该类所在的包需要使用 @MapperScan("所在包名") 声明,继承通用mapper中 Mapper 接口并指定对应的pojo就能使用,同时还能继承其他 Mapper 接口来进行增强,能够非常方便的对单表进行增删改查。 1.3.dao层的使用 Mapper 接口中自带的方法: 都是一些基于单表的增删改查。 select用法 Category category = new Category(); category.setParentId(pid); List<Category> categoryList = categoryDao.select(category); 参数中传入对象,对象的属性与值即为查询的条件。 selectByExample用法 适用于单表的动态条件查询,用法例如: public PageResult<Brand> queryBrandByPage(Integer page, Integer

14 微服务电商【乐优商城】:day01-springboot(实践篇)

隐身守侯 提交于 2019-11-30 16:08:29
本篇实战项目教程涉及到的springboot知识点和参考资料在下面的文章里有详细介绍 14 微服务电商【乐优商城】:day01-springboot(理论篇) 5.SpringBoot实践 本篇博客的目的是学习并实践:使用 通用Mapper插件 在springboot集成mybatis开发SSM微服务项目中的使用。 至于mybatis整合springboot快速入门使用的步骤请参考: 记录一个springboot 中集成 mybatis 的完整使用过程 接下来,我们来看看如何用SpringBoot来玩转以前的SSM,我们沿用之前讲解SSM用到的数据库tb_user和实体类User tb_user.sql -- ---------------------------- -- Table structure for tb_user -- ---------------------------- DROP TABLE IF EXISTS `tb_user`; CREATE TABLE `tb_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_name` varchar(100) DEFAULT NULL COMMENT '用户名', `password` varchar(100) DEFAULT NULL COMMENT '密码

SpringMVC 上传功能

我的未来我决定 提交于 2019-11-30 13:22:30
Spring 框架上传 jpg 文件方法 首先需要准备一个选择图片上传的 jsp 页面: <form action=”upload” method =”post” enctype=”multipart/form-data”>/* 这个声明是很重要的,表明这个表单支持多元数据,如果没有会导致失败。 */ <input type=”file” accept=”image/*” name =”image” /> <input type=”submit” value=”upload”> </form> 以上是前端页面,接下来是 spring 的后端流程 首先在控制器的 servlet 的 xml 上表明支持开放图片上传功能: < bean id ="multipartResolver" class ="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 再创建一个实体类,这个实体类保证 spring框架通过javaBean来进行图像文件的对象转换和传输: public class UplaodImageFile { MultipartFile image ; public MultipartFile getImage() { return image ; } public void setImage

dubbo 简单demo学习

我是研究僧i 提交于 2019-11-30 12:02:19
1.创建一个简单maven项目 叫做 api 定义接口和实体类(实体类可以考虑拆分成另一个项目例如:model) 这个实体类必须实现序列化接口 2.通过springboot 项目创建 provider(服务端) 2.1 pom配置文件 <!--依赖API--> <dependency> <groupId>com.cabinh.boot</groupId> <artifactId>doubbo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--dubbo starter--> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId>

hibernate中get/load有什么区别

北城以北 提交于 2019-11-30 07:24:05
Hibernate中有两个极为相似的方法get()与load(),他们都可以通过指定的实体类与ID从数据库中读取数据,并返回对应的实例,但Hibernate不会搞两个完全一样的方法的,它们间的不同在于:   1.如果找不到符合条件的纪录,get()方法将返回null.而load()将会报 出Objec tNotFoundEcception.  2. load()方法可以返回实体的代理类实例 (这取决于映射文件对类检索策略的设置,如果<class >中的lazy属性设置为false,则采用立即检索策略,返回实体类,如果lazy属性设置为true,则采用 延迟检索策略 ,返回实体的代理类示例,代理类的实例由hibernate在运行时动态生成,继承了实体类,因此继承了实体类的所有属性和方法。当Hibernate创建实体的代理类实例时,仅仅初始化了它的OID属性,其他属性都为空),而 get()永远只返回实体类 . 3. load()方法可以充分利用二级缓存和内部缓存的现有数据 ,而get()方法只在内部缓存中进行查找 , 如没有发现对应数据将跳过二级缓存,直接调用SQL完成查找. hibernate中get方法和load方法的 根本区别 在于: 如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库 中是一定存在的,所以它可以放心的使用