
java
文章平均质量分 76
wangpeng047
这个作者很懒,什么都没留下…
展开
-
hibernate注解(一)
在注解大行其道的今天,xml配置方式已经渐渐退化为非主流了,虽然注解有着很多优点,如:简化配置、减少配置文件数量、提高代码可读性,但它仍然有着无法媲美xml的地方。注解虽然配置简单易懂,但是对于复杂点的数据结构,配置起来反而比xml难(例如用xml配置,因为有帮助文件dtd的支持,因此能很好的利用提示来帮助编程,而注解代码提示不会呈现出项目中所有相关的类,如果你在不了解注解每个类的名称和意义的原创 2013-03-30 18:22:09 · 18125 阅读 · 1 评论 -
MyEclipse常用插件使用教程
一、Findbugs1. 配置1.1 打开FindBugs视图:Windows => Show View => Other… => FindBugs => Bug Info 、Bug Explorer、Bug Reviews1.2 配置FindBugs选择你的项目=>右键 => Properties => FindBugs => 选中“Run automatically”原创 2013-06-30 14:44:41 · 20345 阅读 · 11 评论 -
Junit使用教程(三)
四、实例总结1. 参数化测试有时一个测试方法,不同的参数值会产生不同的结果,那么我们为了测试全面,会把多个参数值都写出来并一一断言测试,这样有时难免费时费力,这是我们便可以采用参数化测试来解决这个问题。参数化测试就好比把一个“输入值,期望值”的集合传入给测试方法,达到一次性测试的目的。package test;import static org.junit.Assert.*;i原创 2013-07-30 18:24:40 · 18745 阅读 · 4 评论 -
HQL使用小技巧——混合SQL
偶然间发现HQL一个非常有意思的用法,拿来分享下。示例如下:1. student数据库表(MySQL)CREATE TABLE `student` ( `ID` int(11) NOT NULL, `NAMES` varchar(50) NOT NULL, `AGE` int(3) NOT NULL, PRIMARY KEY (`ID`)) ENGINE=InnoDB原创 2013-07-30 11:48:59 · 7655 阅读 · 0 评论 -
Junit使用教程(一)
几乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白。知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用。为了从此不再菜鸟,特此总结整理了下Junit的知识点。一、建立Junit测试类1. 右击test测试包,选择New-->Oher... 2. 在窗口中找到Junit,选择Junit Test Case3. 输入名称(N原创 2013-07-30 15:09:29 · 78432 阅读 · 7 评论 -
Junit使用教程(四)
一、会用Spring测试套件的好处在开发基于Spring的应用时,如果你还直接使用Junit进行单元测试,那你就错过了Spring为我们所提供的饕餮大餐了。使用Junit直接进行单元测试有以下四大不足:1)导致多次Spring容器初始化问题根据JUnit测试方法的调用流程,每执行一个测试方法都会创建一个测试用例的实例并调用setUp()方法。由于一般情况下,我们在setUp()方法中初原创 2013-08-17 16:52:14 · 24853 阅读 · 7 评论 -
初识Maven
Maven简介Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来定义生命周期阶段(Phase)中插件(plugin)目标(gole)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象原创 2013-08-17 23:15:18 · 4073 阅读 · 2 评论 -
Hibernate占位符问题[use named parameters or JPA-style positional parameters instead.]
hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息:[main] WARN [org.hibernate.hql.internal.ast.HqlSqlWalker] – [DEPRECATION] Encountered positional parameter near line 1, column 95. Positional parameter are considered deprecated; use named paramet原创 2013-09-29 16:08:56 · 25875 阅读 · 15 评论 -
Junit使用教程(二)
二、核心——断言断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过。1. 断言核心方法assertArrayEquals(expecteds, actuals)查看两个数组是否相等。assertEquals(expected, actual)查看两个对象是否相等。类似于字符串比较使用的equals()方法原创 2013-07-30 17:01:12 · 53118 阅读 · 4 评论 -
Java内部类详解(一)
很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听过也没有使用过,内部类在Java中其实是比较重要的一块内容,掌握好这门知识对于编程来说,犹如插上一对翅膀。原创 2013-10-26 20:54:50 · 4021 阅读 · 1 评论 -
ibatis传递日期Date参数
这本来是一个简单的问题,但是在网上查阅了半天也没找到结果,最后阅读官方文档后,终于找到了方法。其实非常简单,只需要在接口方法参数上加上@Param注解。另外如果需要传递多个参数时,可以使用该注解来实现。例子:public List selectTeacher(@Param(value="id") String id, @Param(value="sex") String sex,原创 2013-06-29 22:44:18 · 15723 阅读 · 1 评论 -
静态变量缓存需要注意的事
在项目过程中,我们有时经常喜欢用静态变量(static)来缓存一些不便的公共数据,但是这么做有一点需要注意:静态变量的保护。由于一些因素(比如查询数据库),我们无法对静态变量加上final属性,因此如果静态变量暴漏后,如果有对静态变量写操作(即修改变量)的话,很可能会引起意想不到的错误。当然平时我们用缓存几乎都是读取操作,所以这个问题不容易引起我们的注意。例子说明:package te原创 2013-06-29 21:59:36 · 12271 阅读 · 1 评论 -
Spring Aop异常处理
在Spring Aop实例的文章中,我向大家介绍了Spring Aop的相关知识,今天我进一步细化下Aop中异常处理的相关知识。 public void doThrowing(JoinPoint jp, Throwable ex) { System.out.println("method " + jp.getTarget().getClass().getName() + "." + jp.原创 2013-06-30 15:57:02 · 5157 阅读 · 1 评论 -
hibernate注解(二)
本篇将向大家介绍表关联的注解方式。1. 一对一(One-to-one)使用@OneToOne注解可以建立实体bean之间的一对一的关联.一对一关联有三种情况:一是关联的实体都共享同样的主键,二是其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束).三是通过关联表来保存两个实体之间的连接关系(注意要模拟一对一关联必须在每一个外键上添加唯一约束).首原创 2013-03-31 20:54:26 · 19545 阅读 · 4 评论 -
日志框架搭建之我见
好的软件、好的系统必然离不开好的日志框架,记录日志的意义是十分重要的,但我们有时候却很迷茫:日志到底该记录些什么,就我现如今的经验来看,具体总结如下:一、应用场景1. 异常这是日志最为基本的功能了。2. 输入参数记录输入参数,不仅有利于寻找异常产生原因,而且也有助于数据分析3. 输出参数有助于开发人员进行连调测试,4. 关键业务运行状态一些重要业务有时候我们必须原创 2013-03-24 18:25:43 · 2722 阅读 · 1 评论 -
hibernate关联查询
很多人认为hibernate一旦涉及到多张表查询就很不方便,只能通过原声sql解决,其实不然,hql语句其实已经比较强大了,基本涵盖了sql的60%的功能。我认为用原生sql的场景应该为以下几点情况:1. 非常复杂sql(嵌套、临时表、混合语句【update包含select嵌套】)2. 某数据库(如oracle)特性函数3. 特殊业务sql,即查询出的结果是某种特殊业务含义,并不是po原创 2013-04-28 23:23:46 · 13928 阅读 · 4 评论 -
sql语句生成sql脚本
sql语句有一种特别的用法,相信很多人还不知道,我也是后来学到的,因此拿来跟大家分享下:生成sql脚本举个例子:select 1 from student;如果表中有数据的话,你就会发现查询的结果会是:根据这个原理,我们可以用来生成sql脚本,以下就是实例:实例1:一个简单的例子select * from Popedomselect 'insert intoPope原创 2013-04-30 09:38:10 · 9313 阅读 · 4 评论 -
Spring注解自动注入Bean
我们知道采用Spring注解时,配置如下: 这样的话,在com包及其所有子包下的所有类如果含有@Component、@Controller、@Service、@Repository等注解的话都会自动纳入到Spring容器中,但是每个类都一个个加上注解,有时难免觉得繁琐,其实Spring也为我们提供了自动为类加上注解的功能。配置如下: 我们可以看到加了conte原创 2013-04-30 09:10:01 · 20006 阅读 · 4 评论 -
小问题大智慧
说到字符串比较,大家都知道,但你真的知道如何比较才是最正确的吗?不知道的人,几乎都是用以下方法来比较的String str = nullif (str == null || str.equals("")) {}这实际上是效率最低的,正确的做法是:String str = null;if (str == null || str.isEmpty()) {}但上述方法需要jd原创 2013-05-28 15:53:43 · 2395 阅读 · 3 评论 -
replace与replaceAll的区别
这两者有些人很容易搞混,因此我在这里详细讲述下。replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;相同点:都原创 2013-05-28 17:15:05 · 73977 阅读 · 3 评论 -
hibernate注解(三)
我们继续介绍hibernate注解的相关内容1. OneToOne懒加载问题一对一注解时,若采用外键列进行实体的关联的话,懒加载问题是需要注意下的。如下:Student表:id int not nullname varchar(50) not nullcard_id int not nullCard表:id int not nullcard_no v原创 2013-05-31 14:16:54 · 16216 阅读 · 2 评论 -
Spring国际化实现
spring作为一个开源框架,对国际化自然提供了支持。说到国际化,有些人认为用处不大,那是因为仅仅从语言的角度考虑的。确实,如果仅简体中文就够了的话,没必要用国际化,但国际化另一特点特对我们来说非常有用。那就是提示信息的统一管理。我们可以将所有提示语都统一写在国际化资源文件里,而且它还支持动态传入参数,即可以写一个提示语模板,根据参数动态生成提示语。这样不但可以避免因为代码文件编码的原因造成的原创 2013-05-31 16:09:49 · 17262 阅读 · 3 评论 -
Java内部类详解(二)
三、种类局部内部类、成员内部类、匿名内部类、静态内部类。原创 2013-10-27 21:27:43 · 2353 阅读 · 4 评论 -
定时任务——表达式
Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz 用 cron 表达式存放执行计划。引用了 cron 表达式的CronTrigger 在计划的时间里会与 job原创 2013-10-28 21:34:04 · 22169 阅读 · 6 评论 -
Junit测试用例配置Log4j
用Junit测试非常方便,但有时我们想要看日志来方便排除,使用spring+log4j时,用Junit测试看日志很多人都不太会,即如何将Junit与log4j进行整合。我也是研究了半天,才终于找到了方法,特此拿来与大家分享下。Junit+spring+log4j整合之所以麻烦,是因为spring与log4j的整合,是放在web.xml里的,随tomcat启动后,spring才会加载log4原创 2014-03-31 15:03:24 · 43527 阅读 · 9 评论 -
Java如何获取Content-Type的文件类型Mime Type
在Http请求中,有时需要知道Content-Type类型,尤其是上传文件时,更为重要,虽然有些办法可以解决,但都不太准确或者繁琐,索性我发现一个开源的类库能够解决相对完美的解决这个问题,它就是jMimeMagic。原创 2014-07-30 16:50:13 · 32462 阅读 · 3 评论 -
Java使用HttpURLConnection上传文件
从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求。但是如果没有页面的话要怎么上传文件呢?由于脱离了浏览器的环境,我们就要自己去完成数据的收集并发送请求,所以就很麻烦了。首先我们来写个JSP页面并看看浏览器发出的Http请求是什么样的原创 2014-07-31 12:51:49 · 66013 阅读 · 13 评论 -
寿星天文历Java封装整理版
由于生活和工作的原因,“寿星天文历”我一直没有动,长时间的丢弃后,当重新拾起时,比较费劲。编程就是这样,思维的火花只在当初的那一瞬,一旦熄灭,重新再点燃断掉的思维是很困难的。因为人的“忘记”能力,真的是挺强的,有时回顾或维护以前的代码时,常常会感叹道:这是我写的吗?够牛逼,看不懂!呵呵,这时候注释的作用的凸显出来了,尽管如此有时仅仅靠注释找以前的思路也是很困难。跑题了,那么,首先对于等着“寿星天文历”封装整理版代码的各位,说声抱歉。这回整理的代码,修复了部分小bug和线程安全问题,同时整理的结构更易于理解原创 2014-08-14 16:39:52 · 9924 阅读 · 9 评论 -
Eclipse查找替换巧妙技巧用法
用Eclipse时,查找替换,可能是我们经常用的工具,但大多数只是查找替换简单的单词文本(如查找替换warnings),但遇到复杂的情况时,大多数人可能就手工改了。例如:/* */ public class Configuration/* */ {/* */ private List contexts;/* */ private List cl原创 2014-12-18 13:03:06 · 26190 阅读 · 6 评论 -
SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件
关于SpringMVC验证框架Validation的使用方法,不是本篇的重点,可参见博文SpringMVC介绍之Validation在使用Validation时,一定有朋友遇到过一个问题,那就是:无法传递参数到国际化资源文件properties错误描述中。原创 2014-12-04 16:24:40 · 29684 阅读 · 5 评论 -
浅谈mybatis优缺点
通过上篇介绍mybatis与hibernate区别,我们已经能得出一些mybatis的优缺点,但那只是相对于hibernate的,并不全面,我来继续总结mybatis的优缺点,以便大家对于mybatis的了解能更全面些。但我所说的优缺点,仅是我个人总结并结合使用体验后得出的结果,并不能代表大众想法,因此才以“浅谈”作为文章标题。如果大家的见解与我不同,欢迎积极提出来一块讨论,我也借以弥补自己认识的不足和短见。原创 2013-11-30 14:24:35 · 76932 阅读 · 27 评论 -
SpringMVC验证框架Validation特殊用法
基本用法不说了,网上例子很多,这里主要介绍下比较特殊情况下使用的方法。1. 分组有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的id来说,保存的时候是不需要的,对于更新时是必须的,可以如下配置:2. 组序列默认情况下,不同组别的约束验证是无序的,然而在某些情况下,约束验证的顺序却很重要,如下面两个例子:(1)第二个组中的约束验证依赖于一个稳定状态来运行,而这个稳定状态是由第一个组来进行验证的。(2)某个组的验证比较耗时,CPU 和内存的使用率相对原创 2014-12-11 13:00:21 · 81244 阅读 · 8 评论 -
spring多数据源配置
项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此。多数据源让人最头痛的,不是配置多个数据源,而是如何能灵活动态的切换数据源。例如在一个spring和hibernate的框架的项目中,我们在spring配置中往往是配置一个dataSource来连接数据库,然后绑定给sessionFactory,在dao层代码中再指定sessionFactory来进行数据库操作。正如原创 2013-04-29 16:48:51 · 130217 阅读 · 51 评论 -
连接MySql超时断开报错问题
使用Mysql数据库时,最让人头疼的一个问题就是不定时会出现连接报错异常Exception,类似的Exception如下(Hibernate为例):org.hibernate.util.JDBCExceptionReporter - SQL Error:0, SQLState: 08S01org.hibernate.util.JDBCExceptionReporter - The last原创 2014-03-31 12:13:11 · 11689 阅读 · 1 评论 -
HttpURLConnection与HttpClient区别及联系
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。 HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于转载 2014-03-31 15:33:22 · 10017 阅读 · 4 评论 -
HttpClient使用详解
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。一、简介HttpClient是Apache Jakarta Common下的子项目,用来提供高效的原创 2014-02-28 11:04:29 · 887340 阅读 · 92 评论 -
Java内部类详解(三)
首先,静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),而且只有静态内部类,而没有静态类(顶级类)的概念。例如,下面定义类是错误的:原创 2013-11-23 21:39:47 · 6685 阅读 · 3 评论 -
mybatis与hibernate区别
以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点:hibernate是全自动,而mybatis是半自动。hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而myb原创 2013-11-30 12:19:02 · 86052 阅读 · 18 评论 -
Maven核心之pom详解
<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.0http://maven.apache.org/maven-v4转载 2013-11-30 16:03:16 · 6478 阅读 · 6 评论 -
Java图片处理开源框架
图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多。现金网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想。虽然也有些其他解决方案,但都摆脱不了繁琐,使用起来十分不方便。为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架。特此拿出来与大家分享。Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简原创 2013-12-27 17:55:52 · 58087 阅读 · 11 评论