spring&hibernate(01-简单构建)

本文介绍了如何在项目中简单构建Spring与Hibernate的整合,通过配置pom.xml文件和编写Java代码,实现数据访问的初步集成,并提供了测试用例。
摘要由CSDN通过智能技术生成

pom.xml

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
</dependency>
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
</dependency>
<dependency>  
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
</dependency>

java 代码

public interface IBaseDao<T> {
    public T getById(Long id);
    public void add(T t);
    public void delete(T t);
    public void update(T t);
    public List<T> query(Map<String, ? extends Object> param);
}
@Transactional
public class BaseDaoImpl<T> implements IBaseDao<T> {

    @Resource
    private SessionFactory sessionFactory;

    private Class<?> clz;

    public BaseDaoImpl(Class<?> clz) {
        this.clz = clz;
    }

    @SuppressWarnings("unchecked")
    @Override
    public T getById(Long id) {
        if(id == null || id.intValue() < 1) {
            return null;
        }
        return (T) sessionFactory.getCurrentSession().get(clz, id);
    }

    @Override
    public void add(T t) {
        if(t != null) 
            sessionFactory.getCurrentSession().save(t);
    }

    @Override
    public void delete(T t) {
        if(t != null)
            sessionFactory.getCurrentSession().delete(t);
    }

    @Override
    public void update(T t) {
        if(t != null)
            sessionFactory.getCurrentSession().update(t);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<T> query(Map<String, ? extends Object> param) {
        StringBuilder sb = new StringBuilder();
        sb.append("from ").append(clz.getName());
        if(param != null && param.size() > 0) {
            sb.append(" where");
            StringBuilder sb1 = new StringBuilder();
            for(Map.Entry<String, ?> entry : param.entrySet()) {
                sb1.append(" and ").append(entry.getKey()).append("=:").append(entry.getKey());
            }
            sb.append(sb1.substring(4));
        }
        Query query = sessionFactory.getCurrentSession().createQuery(sb.toString());
        if(param != null && param.size() > 0) {
            for(Map.Entry<String, ?> entry : param.entrySet()) {
                query.setParameter(entry.getKey(), entry.getValue());
            }
        }
        return (List<T>) query.list();
    }

}
@Repository
public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao {

    public UserDaoImpl() {
        super(User.class);
    }
}

tests

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:beans.xml"})
public class TestUserDao {
    @Resource
    private IUserDao userDao;
    @Resource
    private SessionFactory sessionFactory;

    @Before
    public void setUp() {
        sessionFactory.openSession();
    }

    @Test
    public void testAdd() {
        User user = new User();
        user.setUsername("xxxxxx");
        user.setPassword("password");
        userDao.add(user);
    }

    @Test
    public void testQuery() {
        List<User> users = userDao.query(null);
        System.out.println(Arrays.deepToString(users.toArray()));
    }

    @Test
    public void testQuery1() {
        Map<String, Object> queryInfos = new HashMap<>();
        queryInfos.put("username", "xxxxxx");
        List<User> users = userDao.query(queryInfos);
        System.out.println(Arrays.deepToString(users.toArray()));
    }

    @Test
    public void testUpdate() {
        User user = userDao.getById(2L);
        user.setPassword("222222");
        userDao.update(user);
    }

    @Test
    public void testDelete() {
        User u = new User();
        u.setId(2L);
        userDao.delete(u);
    }

    @After
    public void tearDown() {
        sessionFactory.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值