1. 常用零散工具类
1.1【DateUtil.java】日期处理的工具类
/**
* 时间日期处理工具
* String -> Date
* Date -> String
* 以及生成含有日期的字符串 可以当作保存id用等等。
* 等格式化处理
* **/
public class DateUtil {
private static final String FORMAT_0 = "yyyy-MM-dd HH:mm:ss";
private static final String FORMAT_1 = "yyyy-MM-dd";
private static final String FORMAT_2 = "HH:mm:ss";
private static final String FORMAT_3 = "yyyyMMddHHmmss";
public static String getIdByTime(){
Date now = new Date();
SimpleDateFormat simple = new SimpleDateFormat(FORMAT_3);
return simple.format(now);
}
public static String toFull(Date... date) {
SimpleDateFormat simple = new SimpleDateFormat(FORMAT_0);
if (date!=null && date.length > 0) {
return simple.format(date[0]);
}
return simple.format(new Date());
}
/**
* 如果参数长度不为为0,则取第一个参数进行格式化,<br>
* 否则取当前日期 如:2010-4-15
*
* @param Date
* ... 可变参数
* @return java.lang.String
* **/
public static String toDate(Date... date) {
SimpleDateFormat simple = new SimpleDateFormat(FORMAT_1);
if (date.length > 0) {
return simple.format(date[0]);
}
return simple.format(new Date());
}
/**
* 如果参数长度不为为0,则取第一个参数进行格式化,<br>
* 否则取当前日期时间,精确到秒<br>
* 如:9:36:38
*
* @param Date
* ... 可变参数
* @return java.lang.String
* **/
public static String toTime(Date... date) {
SimpleDateFormat simple = new SimpleDateFormat(FORMAT_2);
if (date.length > 0) {
return simple.format(date[0]);
}
return simple.format(new Date());
}
/**
* 根据字符串格式去转换相应格式的日期和时间
*
* @param java
* .lang.String 必要参数
* @return java.util.Date
* @exception java.text.ParseException
* 如果参数格式不正确会抛出此异常
* **/
public static Date reverse2Date(String date) {
SimpleDateFormat simple = null;
switch (date.trim().length()) {
case 19:
simple = new SimpleDateFormat(FORMAT_0);
break;
case 10:
simple = new SimpleDateFormat(FORMAT_1);
break;
case 8:
simple = new SimpleDateFormat(FORMAT_2);
break;
default:
break;
}
try {
return simple.parse(date.trim());
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 将带有时、分、秒格式的日期转化为00:00:00<br>
* 方便日期推算,格式化后的是yyyy-MM-dd 00:00:00
*
* @param java
* .util.Date... date的长度可以为0,即不用给参数
* @return java.util.Date
* **/
public static Date startOfADay(Date... date) {
SimpleDateFormat simple = new SimpleDateFormat(FORMAT_1);
Date date_ = date.length == 0 ? new Date() : date[0];
String d = simple.format(date_);
try {
return simple.parse(d);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 推算一个月内向前或向后偏移多少天,当然推算年也可以使用
*
* @param date
* 要被偏移的日期,<br>
* amout 偏移量<br>
* b 是否先将date格式化为yyyy-MM-dd 00:00:00 即: 是否严格按整天计算
* @return java.util.Date
* **/
public static Date addDayOfMonth(Date date, Integer amount, Boolean b) {
date = date == null ? new Date() : date;
if (b) {
date = startOfADay(date);
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, amount);
return cal.getTime();
}
/**
* 推算一个小时内向前或向后偏移多少分钟,除了秒、毫秒不可以以外,其他都可以
*
* @param date
* 要被偏移的日期,<br>
* amout 偏移量<br>
* b 是否先将date格式化为yyyy-MM-dd HH:mm:00 即: 是否严格按整分钟计算
* @return java.util.Date
* **/
public static Date addMinuteOfHour(Date date, Integer amount, Boolean b) {
date = date == null ? new Date() : date;
if (b) {
SimpleDateFormat simple = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:00");
try {
date = simple.parse(simple.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, amount);
return cal.getTime();
}
public static void main(String[] args) {
System.out.println(DateUtil.addMinuteOfHour(new Date(), 60, false));
}
}
1.2【Base64Util.java】
String s = "这是一个待加密的字符串";
BASE64Encoder base64e = new BASE64Encoder();
String s2 = base64e.encode(s.getBytes());
BASE64Decoder base64d = new BASE64Decoder();
byte b[] = base64d.decodeBuffer(s2);
String s3 = new String(b);
1.3【MD5Util.java】MD5加密工具类
public class MD5Util {
public static String encode(String message){
try {
MessageDigest md=MessageDigest.getInstance("md5");
byte b[] = md.digest(message.getBytes());
return new BASE64Encoder().encode(b);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
1.4【IDGeneratorUtil.java】ID生成器/ID生成机制
public class IDGeneratorUtil {
public static String genPrimaryKey(){
return UUID.randomUUID().toString();
}
public static String genOrdersNum(){
Date now = new Date();
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String str = df.format(now)+System.currentTimeMillis();
return str;
}
}
1.5【Dom4jUtils.java】
public class Dom4jUtils {
private static String dbFilePath;
static{
ClassLoader c1=Dom4jUtils.class.getClassLoader();
URL url=c1.getResource("users.xml");
dbFilePath=url.getPath();
}
public static Document getDocument() throws DocumentException{
SAXReader reader = new SAXReader();
return reader.read(dbFilePath);
}
public static void writer2xml(Document document) throws Exception{
XMLWriter writer = new XMLWriter(new FileOutputStream(dbFilePath),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
}
}
public class FormBeanUtil {
public static <T>T fillFormBean(Class<T> clazz,HttpServletRequest request){
try {
T bean = clazz.newInstance();
BeanUtils.populate(bean, request.getParameterMap());
return bean;
} catch(Exception e) {
throw new RuntimeException(e);
}
}
}
数据库相关
2.1【JdbcUtil.java】数据库连接、释放的工具类
/**【db.properties】内容
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/custmanage
user=root
password=****
*/
public class JdbcUtil {
private static String driverClassName;
private static String url;
private static String user;
private static String password;
static{
try {
InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
Properties prop = new Properties();
prop.load(in);
driverClassName = prop.getProperty("driverClassName");
url = prop.getProperty("url");
user = prop.getProperty("user");
password = prop.getProperty("password");
Class.forName(driverClassName);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws Exception{
return DriverManager.getConnection(url,user,password);
}
public static void release(ResultSet rs,PreparedStatement ps,Connection conn){
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
rs=null;
}
if(ps!=null){
try{
ps.close();
}catch(SQLException e){
e.printStackTrace();
}
ps=null;
}
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
conn=null;
}
}
}
2.2 【DBCPUtil.java】数据连接池的工具类
public class DBCPUtil{
private static DataSource ds;
static{
try {
InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbconfig.properties");
Properties props = new Properties();
props.load(in);
ds = BasicDataSourceFactory.createDataSource(props);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return ds;
}
}
2.3【EntityFactory.java】创建对象工厂模型
public class EntityFactory {
public static <T> T getInstance(Class<T> t) {
try {
return (T)t.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
2.4【DaoFactory.java】模拟Spring容器的单例模式
public class DaoFactory {
private static DaoFactory instance = new DaoFactory();
private DaoFactory(){
}
public static DaoFactory getInstance(){
return instance;
}
private static String userDaoImplClassName;
static {
try {
InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");
Properties props= new Properties();
props.load(in);
userDaoImplClassName = props.getProperty("userDao");
} catch (IOException e) {
e.printStackTrace();
}
}
public UserDao getUserDao(){
try {
return (UserDao)Class.forName(userDaoImplClassName).newInstance();
} catch (Exception e) {
throw new RuntimeException();
}
}
}
2.5【EntityDao.java】★★利用泛型重构dao层
/**注意:DaoImpl层要继承该类,如:public class DepartmentDaoImpl extends BaseDaoImpl<Department> implements DepartmentDao<Department>{}
*/
public class EntityDao extends HibernateUtils{
/**
* 查找所有的数据
* @param classt
* @return
*/
public <T> List<T> findAll(Class<T> t){
Session session = sessionFactory.openSession();
List<T> list = session.createQuery("from "+t.getName()).list();
session.close();
return list;
}
public <T> T findById(Class<T> t,Serializable id){
Session session = sessionFactory.openSession();
T tobject = (T) session.get(t, id);
session.close();
return tobject;
}
public <T> void saveEntry(T t){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.save(t);
transaction.commit();
session.close();
}
public <T> void updateEntry(T t){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.update(t);
transaction.commit();
session.close();
}
public <T> void deleteEntry(Class<T> t,Serializable id){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
T tObject = this.findById(t, id);
session.delete(tObject);
transaction.commit();
session.close();
}
public <T> T findUser(Class<T> t,String username,String password){
Session session = sessionFactory.openSession();
Query query = session.createQuery("from User where username=:username and password=:password");
query.setString("username", username);
query.setString("password",password);
T tt = (T)query.uniqueResult();
session.close();
return tt;
}
}
public class EntityDaoTest extends HibernateUtils{
@Test
public void testfindAll(){
EntityDao entityDao = new EntityDao();
List<User> userList = entityDao.findAll(User.class);
System.out.println(userList.size());
}
@Test
public void testfindById(){
EntityDao entityDao = EntityFactory.getInstance(EntityDao.class);
User user = entityDao.findById(User.class,1L);
System.out.println(user.getUsername());
}
@Test
public void testsaveEntry(){
EntityDao entityDao = EntityFactory.getInstance(EntityDao.class);
User user = new User();
user.setEmail("123@163.com");
user.setPassword("1234");
user.setPhone("186***");
user.setSex("1");
user.setUsername("hyc");
entityDao.saveEntry(user);
}
}
3. 框架使用
【BaseAction.java】Struts2框架用泛型基类Action:属性驱动、指定常量
public class BaseAction<T> extends ActionSupport implements ModelDriven<T>{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private Class classt;
public BaseAction(){
ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
this.classt = (Class) type.getActualTypeArguments()[0];
try {
this.t = (T) this.classt.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
private T t;
public T getModel(){
return this.t;
}
public static final String LISTACTION = "listAction";
public static final String ADDUI = "addUI";
public static final String UPDATEUI = "updateUI";
public static final String ACTION2ACTION = "action2action";
public String listAction = LISTACTION;
public String addUI = ADDUI;
public String updateUI = UPDATEUI;
public String action2action = ACTION2ACTION;
}
3.1【HibernateUtil.java】利用Hibernate建立sessionFactory的
public class HibernateUtil{
public static SessionFactory sessionFactory;
static{
Configuration config = new Configuration();
config.configure();
sessionFactory = config.buildSessionFactory();
}
}
3.2 【BaseDaoImpl.java】注入HibernateTemplate,实现CURD+RId
public class BaseDaoImpl<T> implements BaseDao<T> {
private Class classt;
public BaseDaoImpl(){
ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
this.classt = (Class)type.getActualTypeArguments()[0];
}
@Resource(name="")
public HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public Collection<T> getAllEntry() {
return this.getHibernateTemplate().find("from "+this.classt.getName());
}
public T getEntryById(Serializable id) {
return (T)this.hibernateTemplate.get(classt, id);
}
public void updateEntry(T t) {
this.hibernateTemplate.update(t);
}
public void saveEntry(T t) {
this.hibernateTemplate.save(t);
}
public void deleteEntry(Serializable id) {
T t = this.getEntryById(id);
this.getHibernateTemplate().delete(t);
}
}
3.3 【SpringInit.java】spring容器初始化的工具类
public class SpringInit {
public static ApplicationContext context;
static{
context = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}