【SSH学习笔记】整合spring3-hibernate的小项目(一)

来源:互联网 发布:linux 三个时间 编辑:程序博客网 时间:2024/05/18 11:45

需求分析:

1、使用spring注入dataSourse数据源

2、使用BaseDao获取注入SessionFactory并返回Session

3、实现查询所有和按字符串查询的方法

4、使用JUNIT测试

【配套的资源代码已经上传,有兴趣的朋友可以下载看看点击打开链接】


操作步骤:

1、创建用户表并添加测试数据

create table users(  userid number(8) primary key,  username nvarchar2(10),  password nvarchar2(10),  birthday date,  flag number(8));insert into users values(1,'zhangsan','123',to_date('1992-1-1','yyyy-MM-dd'),0);insert into users values(2,'lisi','123',to_date('1992-1-1','yyyy-MM-dd'),0);

2、创建用户实体并写好注解

import java.util.Date;@Entity@Table(name="users")public class User {private int userid;private String username;private String password;private Date birthday;private int flag;@Id@GeneratedValuepublic int getUserid() {return userid;}public void setUserid(int userid) {this.userid = userid;}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 Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public int getFlag() {return flag;}public void setFlag(int flag) {this.flag = flag;}public User() {super();}public User(int userid, String username, String password, Date birthday,int flag) {super();this.userid = userid;this.username = username;this.password = password;this.birthday = birthday;this.flag = flag;}}

3、导入Spring3和hibernate3.0所需JAR包,创建applicationContext.xml配置文件并配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><context:component-scan base-package="com.wyd"/><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="oracle.jdbc.OracleDriver"></property><property name="url" value="jdbc:oracle:thin:@localhost:1521:adminwyd"></property><property name="username" value="scott"></property><property name="password" value="tiger"></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="packagesToScan"><value>com.wyd.entity</value></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop><prop key="hibernate.hbm2ddl">update</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop></props></property></bean><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><aop:config><aop:pointcut id="productServiceMethods" expression="execution(* com.wyd.dao.*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods" /></aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="*" propagation="REQUIRED" /></tx:attributes></tx:advice></beans>

4、创建BaseDao、IUserDao接口及其实现类

public class BaseDao {@Resourceprivate SessionFactory sessionFactory;protected Session getSession(){return this.sessionFactory.getCurrentSession();}}public interface IUserDao {public List<User> findAll();public User isUser(String username);}@Repository("userDao")public class UserDao extends BaseDao implements IUserDao {@SuppressWarnings("unchecked")@Overridepublic List<User> findAll() {List<User> list = this.getSession().createQuery("from User").list();return list;}@Overridepublic User isUser(String username) {User user = (User) this.getSession().createQuery("from User where username='"+username+"'").uniqueResult();return user;}}

5、创建UserTest测试类

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("/applicationContext.xml")public class UserTest {@Resource(name = "userDao")private IUserDao userDao;@Testpublic void findAll(){System.out.println(userDao.findAll().size());}@Test public void isUser(){System.out.println(userDao.isUser("zhangsan").getBirthday());}}



6、运行结果

测试findAll():
Hibernate:
    select
        user0_.userid as userid0_,
        user0_.birthday as birthday0_,
        user0_.flag as flag0_,
        user0_.password as password0_,
        user0_.username as username0_
    from
        users user0_
2

测试isUser():
Hibernate:
    select
        user0_.userid as userid0_,
        user0_.birthday as birthday0_,
        user0_.flag as flag0_,
        user0_.password as password0_,
        user0_.username as username0_
    from
        users user0_
    where
        user0_.username='zhangsan'
1992-01-01 00:00:00.0


原创粉丝点击