pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
src/main/java/zttc/itat/user/log
log.java
package zttc.itat.user.log;
public class Log {
}
user-core
src/main/java
--zttc/itat/user/dao
userdao
package zttc.itat.user.dao;
import org.hibernate.Session;
import zttc.itat.user.model.User;
import zttc.itat.user.util.HibernateUtil;
public class UserDao implements IUserDao {
public void add(User user) {
Session session = null;
try {
session = HibernateUtil.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.close(session);
}
}
public User loadByUsername(String username) {
Session session = null;
User user = null;
try {
session = HibernateUtil.openSession();
user = (User)session.createQuery("from User where username=?")
.setParameter(0, username).uniqueResult();
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.close(session);
}
return user;
}
}
iuserdao
package zttc.itat.user.dao;
import zttc.itat.user.model.User;
public interface IUserDao {
public void add(User user);
public User loadByUsername(String username);
}
zttc/itat/user/model
user.java
package zttc.itat.user.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
private int id;
private String username;
private String password;
private String nickname;
public User() {
// TODO Auto-generated constructor stub
}
public User(String username, String password, String nickname) {
super();
this.username = username;
this.password = password;
this.nickname = nickname;
}
public User(int id, String username, String password, String nickname) {
super();
this.id = id;
this.username = username;
this.password = password;
this.nickname = nickname;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
zttc/itat/user/util
DbUtil.java
package zttc.itat.user.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbUtil {
public static Connection getConnection() throws SQLException {
Connection con = null;
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/itat_hibernate",
"root", "123456");
return con;
}
public static void close(Connection con) {
try {
if(con!=null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(PreparedStatement ps) {
try {
if(ps!=null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs) {
try {
if(rs!=null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
hibernateUtil.java
package zttc.itat.user.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtil {
private final static SessionFactory FACTORY = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
Configuration cfg = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
return factory;
}
public static SessionFactory getSessionFactory() {
return FACTORY;
}
public static Session openSession() {
return FACTORY.openSession();
}
public static void close(Session session) {
if(session!=null) session.close();
}
}
src/main/resource
hibernate.cfg.xml
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- hibernate的方言,用来确定连接的数据库 -->
<!-- 数据库的连接类 -->
<!-- 数据库的连接字符串和用户名密码 -->
<!-- 在使用hibernate时会显示相应的SQL -->
<!--
<!-- 会自动完成类到数据表的转换 -->
<!-- 加入实体类的映射文件 -->
init.sql
use itat_maven_test;
create table IF NOT EXISTS t_user(
id int(10) auto_increment primary key,
username varchar(20),
password varchar(20)
);
log4j.properties
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
user-parten
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 导入了三个模块,把这三个模块聚合在一起了 -->
<!-- 聚合是模块的位置 -->
<!--
<!-- 可以排除依赖 -->
<!-- 使用插件依然可以指定相应的依赖 -->
<!-- 此处设置了skip等于设置了把所有的测试编译都跳过,如果测试类写得有问题,也不会报错,所以一般不使用 -->
<!--
<!-- 设置包含的测试类 -->
<!--
<!-- 设置不进行测试的类
<!-- 跳过测试阶段,一般不推荐跳过 -->
<!--
user-services
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 继承的绝对路径是pom的文件 -->
src/main/java
zttc/itat/user/service/userservice.java
package zttc.itat.user.service;
import zttc.itat.user.dao.IUserDao;
import zttc.itat.user.model.User;
public class UserService implements IUserService {
private IUserDao userDao;
public UserService(IUserDao userDao) {
super();
this.userDao = userDao;
}
public void add(User user) {
userDao.add(user);
}
public User loadByUsername(String username) {
return userDao.loadByUsername(username);
}
}
iuserservice.java
package zttc.itat.user.service;
import zttc.itat.user.model.User;
public interface IUserService {
public void add(User user);
public User loadByUsername(String username);
}
src/test/java
zttc/itat/user/service
testuserservice.java
package zttc.itat.user.service;
import static org.easymock.EasyMock.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import zttc.itat.user.dao.IUserDao;
import zttc.itat.user.model.User;
import zttc.itat.user.util.EntitiesHelper;
public class TestUserService {
private IUserDao userDao;
private IUserService userService;
private User baseUser;
@Before
public void setUp() {
userDao = createStrictMock(IUserDao.class);
userService = new UserService(userDao);
baseUser = new User("admin","123","admin");
}
@Test
public void testAdd() {
userDao.add(baseUser);
expectLastCall();
replay(userDao);
userService.add(baseUser);
}
@Test
public void testLoadByUsername() {
expect(userDao.loadByUsername("admin")).andReturn(baseUser);
replay(userDao);
User tu = userService.loadByUsername("admin");
EntitiesHelper.assertUser(tu,baseUser);
}
@After
public void tearDown() {
verify(userDao);
}
}
zttc/itat/user/util/entitieshelper.java
package zttc.itat.user.util;
import junit.framework.Assert;
import zttc.itat.user.model.User;
public class EntitiesHelper {
private static User baseUser = new User(1,"admin","123","管理员");
public static void assertUser(User expected,User actual) {
Assert.assertNotNull(expected);
Assert.assertEquals(expected.getId(), actual.getId());
Assert.assertEquals(expected.getUsername(), actual.getUsername());
Assert.assertEquals(expected.getPassword(), actual.getPassword());
Assert.assertEquals(expected.getNickname(), actual.getNickname());
}
public static void assertUser(User expected) {
assertUser(expected, baseUser);
}
}
user-web
pom.xml
src/main/java
zttc/itat/servlet/helloservlet.java
package zttc.itat.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import zttc.itat.user.model.User;
public class HelloServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setAttribute("user", new User("admin","123","管理员123"));
req.getRequestDispatcher("/hello.jsp").forward(req, resp);
}
}
src/main/webapp
hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
web.xml
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30117285/viewspace-1414560/ ,如需转载,请注明出处,否则将追究法律责任。