hibernate 5 mysql basedao

版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/82732896

这个basedao在查询,保存等动作的最后是syso结果的,如果不要请删除
首先是spring中的配置 特别是sessionfactory

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">




    <!-- 使Autowired注解生效 -->           
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

    <!-- 配置dataSource -->
    <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/campus_second?characterEncoding=utf8"/>
        <property name="user" value="root"/>
        <property name="password" value="1996818"/>
        <property name="initialPoolSize" value="5"/>
        <property name="maxPoolSize" value="10"/>
    </bean>

    <!-- 配置SessionFactory -->
    <bean class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" id="sessionFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
        <property name="packagesToScan"> 
            <list> 
                <value>com.ssh.po</value> 
            </list> 
        </property> 
   </bean>

    <!-- 开启注解扫描包  -->
    <context:component-scan base-package="com.ssh.daoImpl"></context:component-scan>
    <context:component-scan base-package="com.ssh.serviceImpl"></context:component-scan>


</beans>

dao

package com.ssh.dao;

import java.util.List;

public interface BaseDao {

    public void save(Object object);
    public void update(Object object);
    public void saveOrUpdate(Object object);
    public void delete(Object object);
    public List<?> queryForListByHql(String hql,Object...args);
    public List<?> queryForListLimitByHql(String hql,int begin,int num,Object...args);
    public List<?> queryForPageListByHql(String hql,int pageindex,int limit,Object...args);
    public Object getById(Class<?> clazz,Object id);
    public int executeHQL(String hql,Object...args);
    public int executeSQL(String sql,Object...args);
    public Object uniqueQuery(String hql,Object...args);
    public Object uniqueQueryBySql(String sql,Object...args);
    public List<?> executeSQLQueryToMap(String sql ,Object...objects);

}
package com.ssh.daoImpl;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.ssh.dao.BaseDao;
import com.ssh.po.Activity;
@Repository 
public class BaseDaoImpl implements BaseDao{

    @Autowired 
    private SessionFactory sessionFactory;

    @Override
    public void save(Object object){
        Session session = sessionFactory.openSession(); 
        Transaction tx = session.beginTransaction(); 
        session.save(object);       
        tx.commit(); 
        session.close(); 
        System.out.println("insert ok");
        System.out.println(object.toString());
    }
    @Override
    public void update(Object object){
        Session session = sessionFactory.openSession(); 
        Transaction tx = session.beginTransaction(); 
        session.update(object);     
        tx.commit(); 
        session.close(); 
        System.out.println("update ok");
        System.out.println(object.toString());
    }

    @Override
    public void saveOrUpdate(Object object){
        Session session = sessionFactory.openSession(); 
        Transaction tx = session.beginTransaction(); 
        session.saveOrUpdate(object);   
        tx.commit(); 
        session.close(); 
        System.out.println("saveOrUpdate ok");
        System.out.println(object.toString());

    }
    @Override
    public void delete(Object object){
        Session session = sessionFactory.openSession(); 
        Transaction tx = session.beginTransaction(); 
        session.delete(object); 
        tx.commit(); 
        session.close(); 
        System.out.println("delete ok");
        System.out.println(object.toString());

    }

    /**
     * 根据hql返回一个list  如果有参数刚hql用?来表示条件    
     * service层示范
     * List<Activity> list=(List<Activity>)baseDao.queryForListByHql("from Activity", null);
     * List<Activity> list=(List<Activity>)baseDao.queryForListByHql("from Activity where id=?0", 2);
     * @param hql
     * @param args  从1开始赋值
     * @return
     */
    @Override
    public List<?> queryForListByHql(String hql,Object...args) {
        List<?> lis =null;
        Session s = sessionFactory.openSession(); 
        Query q = s.createQuery(hql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        lis = q.list(); 
        System.out.println("queryForListByHql , find "+lis.size()+"条数据");
        s.close(); 
        return lis;
    }
    /*
     * 查询hql语句
     * begin 为查询的头一条记录,从0开始
     * num为查询的总条数
    */
    @Override
    public List<?> queryForListLimitByHql(String hql,int begin,int num,Object...args){
        List<?> lis =null;
        Session s = sessionFactory.openSession(); 
        Query q = s.createQuery(hql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        q.setFirstResult(begin);
        q.setMaxResults(num);
        lis = q.list();
        System.out.println("queryForListLimitByHql , find "+lis.size()+"条数据");
        s.close(); 
        return lis;
    }

    /**
     * 分页查询
     * @param hql
     * @param pageindex 从1开始
     * @param limit 每页的数目
     * @param args
     * @return
     */
    @Override
    public List<?> queryForPageListByHql(String hql,int pageindex,int limit,Object...args) {
        List<?> lis =null;
        Session s = sessionFactory.openSession(); 
        Query q = s.createQuery(hql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        q.setFirstResult((pageindex-1)*limit);
        q.setMaxResults(limit);
        lis = q.list();
        System.out.println("queryForPageListByHql , find "+lis.size()+"条数据");
        s.close(); 
        return lis;
    }


    /**
     * 根据id 查询对象
     * Activity activity=(Activity)baseDao.getById(Activity.class, 2);
     * @param clazz
     * @param id
     * @return
     */
    @Override
    public Object getById(Class<?> clazz,Object id) {
        Session s = sessionFactory.openSession(); 
        Object result=s.get(clazz, (Serializable) id);
        System.out.println("getById  "+result.toString());
        s.close(); 
        return result;
    }
    /**
     * 执行HQL
     * @param hql
     * @param obj
     */
    @Override
    public int executeHQL(String hql,Object...args) {

        Session session = sessionFactory.openSession(); 
        Transaction tx = session.beginTransaction(); 
        Query q = session.createQuery(hql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        int result=q.executeUpdate();
        tx.commit(); 
        session.close(); 
        System.out.println("executeHQL ok");
        System.out.println("result is"+result);
        return result;
    }
    /**
     * 执行SQL
     * @param hql
     * @param obj
     */
    @Override
    public int executeSQL(String sql,Object...args) {
        Session session = sessionFactory.openSession(); 
        Transaction tx = session.beginTransaction(); 
        Query q = session.createSQLQuery(sql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        int result=q.executeUpdate();
        tx.commit(); 
        session.close(); 
        System.out.println("executeSQL ok");
        System.out.println("result is"+result);
        return result;
    }
    /**
     * hql单一值查值
     * System.out.println((int)baseDao.uniqueQuery("Select id From Activity Where id= ?0", 1));
     * @param hql
     * @param args
     * @return
     */
    @Override
    public Object uniqueQuery(String hql,Object...args) {
        Session session = sessionFactory.openSession(); 
        Query q = session.createQuery(hql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        Object result=q.uniqueResult();
        if(result==null){
            System.out.println("uniqueQuery  query nothing");
        }
        else{
            System.out.println("uniqueQuery "+result.toString());
        }
        session.close(); 
        return result;
    }
    /***
     * sql 单一值查值
     * @param sql
     * @param args
     * @return
     */
    @Override
    public Object uniqueQueryBySql(String sql,Object...args) {
        Session session = sessionFactory.openSession(); 
        Query q = session.createSQLQuery(sql);
        if (null!=args&&args.length>0) {
            for (int i = 0; i < args.length; i++) {
                q.setParameter(i, args[i]);
            }
        }
        Object result=q.uniqueResult();
        session.close();
        return result;
    }

    /**
     * 执行sql语句返回list<map<String,object>></font>
     * @param sql
     * @param objects
     * @return
     */
    @Override
    public List<?> executeSQLQueryToMap(String sql ,Object...objects){
        List<?> lis =null;
        Session s = sessionFactory.openSession(); 
        Query q = s.createSQLQuery(sql);
        if (null!=objects&&objects.length>0) {
            for (int i = 0; i < objects.length; i++) {
                q.setParameter(i, objects[i]);
            }
        }
        q.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        List<?> result=q.list();
        s.close();
        return result;
    }


}

猜你喜欢

转载自blog.csdn.net/xushiyu1996818/article/details/82732896