![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
java
qq_27886997
这个作者很懒,什么都没留下…
展开
-
jpa 实体注解
导入的包:import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.pe...转载 2018-10-31 17:49:18 · 405 阅读 · 0 评论 -
hibernate关闭自动建表
表结构和数据总是在程序执行的时候无端的修改,折腾了好长时间,查了很长时间hibernate的数据库映射文件和接口程序,始终没有发现有什么错误,到最后才发现了它! <property name="hibernate.hbm2ddl.auto" value="update" />解释如下:hibernate.hbm2ddl.auto Automatically ...转载 2018-11-29 16:18:02 · 2330 阅读 · 0 评论 -
mybaties的执行流程
1.加载配置文件 进行初始化都干了什么?把配置文件通过xml解析产生configruation配置信息对象SqlSessionFactoryBuilder通过Configuration对象创建一个DefaultSessionFactory对象并返回配置文件中的SQL块解析并放到一个MappedStatement里面,后面根据sql的id就能获得对应的MappedStatemen转载 2017-09-23 12:35:09 · 270 阅读 · 0 评论 -
hibernate 一对多 或者多对多时候,集合属性怎么分页 过滤? 一个人一百个订单,绝对要分页的
1、集合过滤: 对于一个已经加载的Customer对象,假设对它的orders集合采用延迟加载机制,那么当调用customer.getOrders().iterator()时,Hibernate就会初始化orders集合,然后到数据库中去加载Customer对象所关联的Order对象,并且填充orders集合,但是很多时候我们其实只是需要关联对象中符合某些条件的一部分对象,而并不需要加载...转载 2018-11-27 18:24:05 · 514 阅读 · 0 评论 -
mybaties拦截器设计思想--举例由浅入深分析
最近在用mybatis做项目,需要用到mybatis的拦截器功能,就顺便把mybatis的拦截器源码大致的看了一遍,为了温故而知新,在此就按照自己的理解由浅入深的理解一下它的设计。 和大家分享一下,不足和谬误之处欢迎交流。直接入正题。 首先,先不管mybatis的源码是怎么设计的,先假设一下自己要做一个拦截器应该怎么做。拦截器的实现都是基于代理的设计模式设计的,简单的说就是要创造一个目标类转载 2017-09-24 16:34:18 · 184 阅读 · 0 评论 -
hibernate延迟加载和session关闭问题
1.关闭延迟加载特性2.在session关闭之前先获取需要查询的数据,可以使用工具方法Hibernate.isInitialized()判断对象是否被加载,如果没有被加载则可以使用Hibernate.initialize()方法加载对象。使用拦截器或过滤器延长Session的生命周期直到视图获得数据。Spring整合Hibernate提供的OpenSessionInViewFilter和O...转载 2018-10-31 16:57:29 · 543 阅读 · 0 评论 -
hibernate 基于主键的双向一对一关联映射(@OneToOne) 注解方式
简介:有时候会把一张大表拆分为两个小表,一个主表一个从表,从表的id根据主表生成,两表的id一样,所以称为共享id;主表的id是自动生成的,也就是先新建几条主表信息,保存从表的时候再集。(主表)从表的id就会根据主表生成;从表端,维护端(有外键方):@Id @GenericGenerator(name =“pkGenerator”,strategy =“foreign”, ...转载 2018-12-18 14:34:25 · 2472 阅读 · 0 评论 -
mybatis执行流程
一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的chenjc_it 所写的博文原理分析之二:框架整体设计 中的MyBatis架构体图,chenjc_it总结的非常好,赞一个!1.接口层---和数据库交互的方式MyBatis和数据库的交互有两种方式:a.使用传统的MyBatis提供的API转载 2017-09-23 20:58:31 · 22355 阅读 · 3 评论 -
jpa多表关系 一对多 多对多 一对一 注解怎么写
一,多表关系1,一对多联合查询的时候左右表通过外键属性关联 hibernate实体之间关联的的set 后台必须都是持久态的,这样才能保存,更新,只有加了级联之后,set的对象可以是游离态的,因为级联会自动保存的,把游离态的对象保存后变为持久态的,默认关联的set都是允许空值的 一方放弃外键维护,多方来维护,默认双方都有外键维护权力,一方选择放弃就行(没写@OneTo...原创 2018-10-31 17:36:03 · 1987 阅读 · 0 评论 -
Action中使用Servlet对象
7.4 ActionContext和ServletActionContext7.4.1 再探ActionContext前面已经了解到ActionContext是Action执行时的上下文,里面存放着Action在执行时需要用到的对象,我们也称之为广义值栈。 Struts2在每次执行Action之前都会创建新的ActionContext,在同一个线程里Acti转载 2017-11-01 22:24:59 · 296 阅读 · 0 评论 -
Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解,一 介绍1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。Struts2的标签转载 2017-11-13 23:58:26 · 168 阅读 · 0 评论 -
IDEA下创建Maven项目,并整合使用Spring、Spring MVC、Mybatis框架
本项目使用的是IDEA 2016创建。项目使用Spring 4.2.6,Mybatis3.4.0,Tomcat使用的是Tomcat8,数据库为MySQL。 首先电脑安装Maven,接着打开IDEA新建一个project,选择Maven,选择图中所选项,下一步。填写好GroupId和ArtifactId,GroupId在公司中一般都是域名的逆序,ArtifactId用来标明该项目是用来做什么...转载 2019-05-08 11:29:16 · 333 阅读 · 0 评论 -
struts国际化
几年之前,应用程序开发者能够考虑到仅仅支持他们本国的只使用一种语言(或者有时候是两种)和通常只有一种数量表现方式(例如日期、数字、货币值)的应用。然而,基于web技术的应用程序的爆炸性增长,以及将这些应用程序部署在Internet或其它被广泛访问的网络之上,已经在很多情况下使得国家的边界淡化到不可见。这种情况转变成为一种对于应用程序支持国际化(internationalization,经常被称做"转载 2017-11-13 23:31:20 · 104 阅读 · 0 评论 -
idea中mybatis自动生成pojo、mapper.xml、接口
在maven工程中的resource中创建generatorConfigxml 配置generatorConfigxml的 配置pomxml 生成对象的两种方式 方式一使用idea的maven插件直接快速生成 方式二在Intellij IDEA添加一个Run运行选项使用maven运行mybatis-generator-maven-plugin插件 St...转载 2019-05-08 11:26:18 · 5456 阅读 · 0 评论 -
spring aop实现权限控制
spring aop 拦截业务方法,实现权限控制 难点:aop类是普通的java类,session是无法注入的,那么在有状态的系统中如何获取用户相关信息呢,session是必经之路啊,获取session就变的很重要。思索很久没有办法,后来在网上看到了解决办法。 思路是: i. SysContext 成员变量 request,sessi转载 2017-11-09 22:41:51 · 253 阅读 · 0 评论 -
java设计模式--策略模式--规避继承的耦合度大和接口的不能复用
一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案。在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能的转载 2017-09-21 14:41:42 · 394 阅读 · 0 评论 -
单例模式
继续介绍23种设计模式系列之单例模式。概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整转载 2017-11-09 01:43:34 · 99 阅读 · 0 评论 -
java设计模式--代理模式--三种代理方式的区别
代理(Proxy)是一种设计模式,即通过代理对象访问目标对象,这样做的好处是:在不修改目标对象的源码下,对方法功能进行增强。也就是在间接访问目标对象的同时,可以在其前或后,添加其它的逻辑代码.1.1.静态代理静态代理: -->一个原类与一个代理类要一一对应。如果多个目标类就要相应的创建多个代理类,维护不方便-->两者都实现共同的接口或继承相同的抽象类;-转载 2017-09-21 15:40:30 · 1370 阅读 · 1 评论 -
spring aop实现日志管理
可以自定义注解,给Controller和service对象加上说明,比如这个方法是查询商品的;使用aop拦截Controller和service对象,通过反射创建目标方法的method对象,并获得该方法的注解说明,把说明封装到日志对象里;当然也获得方法名,还可以获得登陆的用户信息,把他们都封装日志对象里,日志对象可以存放到数据库里,也可以存到本地;这样就可以根据日志知道谁调用了那些方法,这些方法是转载 2017-11-09 22:43:56 · 208 阅读 · 0 评论 -
jvm内存分配
首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢? 概括地说来,JVM初始运行的时候都会分配好Method Area(方法区)和Heap(转载 2017-09-23 22:31:40 · 274 阅读 · 0 评论 -
java-集合体系总结
JAVA集合类汇总一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口数组和集合的区别:数组大小固定转载 2017-10-16 13:19:50 · 153 阅读 · 0 评论 -
多线程--锁机制+synchronized的用法
一、什么是锁机制,有啥作用?锁机制是java虚拟机内部提供的,每个对象都有各自的对象锁,一个类的不同实例,它们的对象锁也不同,每个类也有自己的类锁,类在虚拟机中只加载一份,所以每个类只有一个类锁,类锁的实质还是类加载时产生的字节码对象的对象锁。synchronized是一种标志,用来标记一个区域或者某个方法。一个线程获取了某个对象的对象锁,这时候只有该线程才能访问该对象中被synchroniz转载 2017-10-15 14:05:51 · 317 阅读 · 0 评论 -
Java之线程池源码深入理解
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲...转载 2018-03-14 15:09:00 · 96 阅读 · 0 评论 -
filter拦截修改response
Filter 先拦截request, doFilter放行, response响应回来, Filter再次拦截 ,执行doFilter()后面的代码执行过程:发出request请求,服务器封装request对象,filter拦截request对象,在filter里面可以拿到前台传递过来的数据,使用装饰着模式,编写MyRequest类继承 HttpServletRequestWrapper.原创 2017-08-01 22:21:01 · 5426 阅读 · 0 评论 -
servlet方式下载之renponse详解
下载的文件要通过响应传递给浏览器,并且告知浏览器文件的MIME类型,编码,要用下载的方式打开,浏览器不支持下载文件的中文名字,后台要进行编码处理。下面我们就来详细介绍一下这些方法的使用吧:第一个例子:通过Response进行数据的输出,下面是一个测试的方法,这个方法只要在service方法中调用即可,传递一个HttpServletResponse对象,就可以进行输出的转载 2017-08-04 15:41:37 · 256 阅读 · 0 评论 -
response.encodeURL的用法 把 Session ID 添加到 URL 信息中
当一个 Session 开始时,Servlet 容器将创建一个 HttpSession 对象,Servlet 容器为 HttpSession 分配一个唯一标识符,称为 Session ID。Servlet 容器将 Session ID 作为 Cookie 保存在客户的浏览器中。每次客户发出 HTTP 请求时,Servlet 容器可以从 HttpRequest 对象中读取 Session ID,转载 2017-08-04 16:39:38 · 3254 阅读 · 0 评论 -
Servlet中请求与响应的编码总结
request请求过程 与respone响应过程乱码问题的产生过程request域默认使用iso8859-1编解码,前台页面传递的参数的编码类型由html编码决定,例如html或者jsp使用utf-8编码,参数传到request域,request使用iso8859-1解码,这时候再用getParameter()就出现编解码不一致,所以出现乱码。使用request,客户端向后台传递原创 2017-08-01 15:50:54 · 3141 阅读 · 0 评论 -
关天response.setContentType()
response.setContentType()的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。例如web浏览器就是通过MIME类型来判断文件是GIF图片。通过MIME类型来处理json字符串。常用文件扩展名对应的MIME格式// 响应的是json数据里面包含了html标签 response.setContentTy转载 2017-08-01 15:19:26 · 466 阅读 · 0 评论 -
页面----controller------mysql java 日期类型的存储
1、js的date对象不能在controller里封装为java的datehibernate注解:@DateTimeFormat(pattern = "yyyy-MM-dd") 就是前台可以传递2018-12-6这样的字符串,后台直接变为date类型 ,pattern也可以带上时间 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" ) ...原创 2018-12-06 17:16:26 · 172 阅读 · 0 评论 -
bean的深度拷贝
Java如何对一个对象进行深拷贝?spring 的beanutil copyProperties() 是浅拷贝 ,推荐使用序列化那个拷贝原文链接:wudashan.com深拷贝实现代码:https://github.com/wudashan/java-deep-copy介绍在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值.转载 2020-06-22 12:05:17 · 1562 阅读 · 0 评论 -
vo dao dto po的区别(有时候不能用实体直接返回给页面)
在Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念中介绍过Java中的各种模型概念。在这里简单再总结一下:在日常的项目开发中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。很多人可能对VO和DTO并不是那么熟悉,相反对DO却比较熟悉,那是因为在很多项目中由于种种原因我们只使用了D...转载 2018-10-30 18:45:51 · 8757 阅读 · 0 评论 -
Http请求-----参数传输域封装
可以安装一个postman ,上边可以灵活的选择请求方式,content-type类型,参数类型等 发送求情前台部分关心的:Ajax或者vue中的axios等,大部分请求都是按照表单的形式发送的,表单content-type有两种:application/x-www-form-urlencoded: 表单的默认形式,大多数发送请求工具默认的形式,用的最多的,不管get/post ,这时...转载 2019-03-05 16:47:28 · 812 阅读 · 0 评论