Hibernate、Spring、myBatis下增删改查的Dao与DaoImpI

Hibernate

Dao

//Dao.java
import java.util.List;

/**
 * @author Administrator
 * 
 */
public interface Dao {

	void saveObject(Object object);

	void updateObject(Object object);

	void deleteObject(Object object);

	Object getObject(String HQL);

	List<?> findWithPage(int page, int rows, String HQL);

	List<?> findAllInfo(String HQL);
}

DaoImpI

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import com.demo.utils.HibernateUtils;

/**
 * @author Administrator
 * 
 */
@SuppressWarnings("rawtypes")
public class DaoImpI implements Dao {

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.demo.dao.Dao#saveObject(java.lang.Object)
	 */
	@Override
	public void saveObject(Object object) {

		Session session = HibernateUtils.getSession();
		try {
			session.getTransaction().begin();
			session.save(object);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.getStackTrace();
			session.getTransaction().rollback();
		} finally {
			HibernateUtils.getClosed(session);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.demo.dao.Dao#updateObject(java.lang.Object)
	 */
	@Override
	public void updateObject(Object object) {

		Session session = HibernateUtils.getSession();
		try {
			session.getTransaction().begin();
			session.update(object);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.getStackTrace();
			session.getTransaction().rollback();
		} finally {
			HibernateUtils.getClosed(session);
		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.demo.dao.Dao#deleteObject(java.lang.Object)
	 */
	@Override
	public void deleteObject(Object object) {

		Session session = HibernateUtils.getSession();
		try {
			session.getTransaction().begin();
			session.delete(object);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.getStackTrace();
			session.getTransaction().rollback();
		} finally {
			HibernateUtils.getClosed(session);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.demo.dao.Dao#findWithPage(int, int, java.lang.String)
	 */
	@Override
	public List<?> findWithPage(int page, int rows, String HQL) {
		List<?> list = new ArrayList();
		Session session = HibernateUtils.getSession();

		try {
			list=session.createQuery(HQL).setFirstResult((page - 1) * rows)
					.setMaxResults(rows).list();
		} catch (Exception e) {
			e.getStackTrace();
		} finally {
			HibernateUtils.getClosed(session);
		}
		return list;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.demo.dao.Dao#findAllInfo(java.lang.String)
	 */

	@Override
	public List<?> findAllInfo(String HQL) {
		Session session = HibernateUtils.getSession();
		List<?> list = new ArrayList();
		try {
			list=session.createQuery(HQL).list();
		} catch (Exception e) {
			e.getStackTrace();
		} finally {
			HibernateUtils.getClosed(session);
		}
		return list;
	}

	@Override
	public Object getObject(String HQL) {
		Session session = HibernateUtils.getSession();
		Object object = null;
		try {
			object=session.createQuery(HQL).uniqueResult();
		} catch (Exception e) {

		}
		return object;
	}

}

Spring

Dao

//AssetsManagerDao.java
import java.util.List;

/**
 * 固定资产管理包括如下:
 * 资产管理资,产移动管理,资产报废管理,维护维修管理,库存内容,使用内容
 * 
 */
public interface AssetsManagerDao {
	/**
	 * 添加或更新一个对象
	 * @param obj
	 */
	void saveOrUpdateObject(Object obj);

	/**
	 * 删除一个对象
	 * @param obj
	 */
	void deleteObject(Object obj);
	/**
	 * 通过HQL语言查询一个对象
	 * @param HQL
	 * @return
	 */
	Object getObject(String HQL);
	/**
	 * 分页查询数据
	 * @param page
	 * @param rows
	 * @param HQL
	 * @return
	 */
	 List<?>findWithPage(int page,int  rows,String HQL);
	/**
	 * 查询全部数据
	 * @param HQL
	 * @return
	 */
	List<?>findAllInfo(String HQL);
}

DaoImpI

//AssetsManagerDaoImpI.java
import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.cissst.dao.AssetsManagerDao;

public class AssetsManagerDaoImpI  extends HibernateDaoSupport implements AssetsManagerDao{

	public void saveOrUpdateObject(Object obj) {
		super.getHibernateTemplate().saveOrUpdate(obj);
		super.getHibernateTemplate().flush();
		super.getHibernateTemplate().clear();
	}

	public void deleteObject(Object obj) {
		super.getHibernateTemplate().delete(obj);
		super.getHibernateTemplate().flush();
		super.getHibernateTemplate().clear();

	}

	public Object getObject(final String HQL) {

		return super.getHibernateTemplate().execute(new HibernateCallback<Object>() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				return session.createQuery(HQL).uniqueResult();
			}
		});
	}

	public List<?> findWithPage(final int page, final int rows, final String HQL) {

		return super.getHibernateTemplate().executeFind(new HibernateCallback<List<?>>() {
			public List<?> doInHibernate(Session session)
					throws HibernateException, SQLException {
				return session.createQuery(HQL).setFirstResult((page-1)*rows).setMaxResults(rows).list();
			}
		});
	}

	public List<?> findAllInfo(final String HQL) {

		return super.getHibernateTemplate().executeFind(new HibernateCallback<List<?>>() {
			public List<?> doInHibernate(Session session)
					throws HibernateException, SQLException {
				return session.createQuery(HQL).list();
			}
		});
	}

}

myBatis

Dao

//UsersMapper.java
import java.util.List;

import com.cissst.bean.Users;

/**
 * 定义数据访问层DAO接口
 * @author JSZX
 *
 */
public interface UsersMapper {

	/**
	 * 查询用户全部信息
	 * @return
	 */
	List<Users>findAllUserInfo(Users users);

	void insertUserInfo(Users users);

	void updateUserInfo(Users users);

	void deleteUserInfoById(int userId);

}
<!--由于myBatis用的是XML因此给出项目的配置文件-->
<!-- UserMapper.xml 与Dao同一文件夹 -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 该配置文件就是前面所说的 配置sql -->
<mapper namespace="com.cissst.dao.data.UsersMapper">
	<resultMap id="userMapper" type="com.cissst.bean.Users">
		<id property="id" column="id" />
		<result property="username" column="username" />
		<result property="password" column="password" />
		<result property="creatTime" column="creatTime" />
		<result property="endTime" column="endTime" />
		<association property="dept" javaType="com.cissst.bean.Dept">
			<id property="id" column="deptId" />
			<result property="deptName" column="deptName" />
		</association>
	</resultMap>

	<insert id="insertUserInfo" parameterType="com.cissst.bean.Users"
		useGeneratedKeys="true" keyProperty="id" keyColumn="id">
		<!-- <selectKey keyProperty="" keyColumn="" order="BEFORE"> -->
		<!-- select max(customer_id)+1 from dual -->
		<!-- </selectKey> -->
		insert into
		tbusers(username,password,creatTime,endTime,deptId)
		values(#{username,jdbcType=VARCHAR},
		#{password,jdbcType=VARCHAR},
		#{creatTime,jdbcType=VARCHAR},
		#{endTime,jdbcType=VARCHAR},
		#{dept.id,jdbcType=INTEGER})

	</insert>

	<select id="findAllUserInfo" resultMap="userMapper"
		statementType="PREPARED">

		select u.id as id,
		u.username as username ,u.password as
		password,u.creatTime as
		creatTime ,u.endTime as endTime ,d.deptName as
		deptName from
		tbusers
		u,tbdept d
		<where>
			u.deptId=d.deptId
			<!-- <if test="id >0"> -->
			<!-- <![CDATA[id>#{id}]]> -->
			<!-- </if> -->
			<if test="username !=null and username !=‘‘">

				and u.username like ‘%${username}%‘
			</if>

			<if test="password !=null and password !=‘‘">
				and u.password like ‘%${password}%‘

			</if>
			<if test="dept.deptName!=‘‘ and dept.deptName !=null">
				and d.deptName like ‘%${dept.deptName}%‘
			</if>
		</where>

	</select>

	<update id="updateUserInfo" parameterType="com.cissst.bean.Users"
		statementType="PREPARED">

		update tbusers
		<set>
			<if test="username!=null and username!=‘‘">
				username=#{username,jdbcType=VARCHAR},
			</if>
			<if test="password!=null and password!=‘‘">
				password=#{password,jdbcType=VARCHAR},
			</if>

			<if test="creatTime!=null and creatTime!=‘‘">
				creatTime=#{creatTime,jdbcType=VARCHAR},
			</if>
			<if test="endTime!=null and endTime!=‘‘">
				endTime=#{endTime,jdbcType=VARCHAR},
			</if>
			<if test="dept.id>0">
				deptId=#{dept.id,jdbcType=INTEGER}
			</if>

		</set>
		where id=#{id}
	</update>

	<delete id="delUserInfo" parameterType="_int">
		delete from tbusers
		<where>
			<if test="id>0">
				id=#{id}
			</if>
		</where>

	</delete>

</mapper>
<!--mapping下的配置文件一块给出 -->
<!-- mybatis-configuraction.xml-->

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 该配置文件主要配置的是连接数据库的信息 -->
<configuration>

<!-- <settings> -->

<!-- <setting name="cacheEnabled" value="true"/> -->
<!-- <setting name="lazyLoadingEnabled" value="true"/> -->
<!-- <setting name="defaultStatementTimeout" value="25000"/> -->

<!-- </settings> -->
<typeAliases>
<typeAlias alias="usersAlias" type="com.cissst.bean.Users" />
<typeAlias alias="deptAlias" type="com.cissst.bean.Dept" />
</typeAliases>
<environments default="dev">

<environment id="dev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="url" value="jdbc:mysql://127.0.0.1/mydatabase"/>
<property name="driver" value="com.mysql.jdbc.Driver"/>
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="/com/cissst/dao/data/UserMapper.xml"/>

</mappers>
</configuration>
时间: 2024-12-28 22:49:15

Hibernate、Spring、myBatis下增删改查的Dao与DaoImpI的相关文章

Struts2+Hibernate+Spring框架实现增删改查

一.添加3个框架的JAR包,完成后写配置文件: 1.web配置文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation=&quo

mybatis实现增删改查

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录.    MyBatis的前身是IBatis,也是一个使用很广的持久化框架.和hibernate对比,MyBatis更基础,要求使用者自己控制的东西更多

hibernate关联对象的增删改查------查

本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = sessionFactory.getCurrentSession(); session.beginTransa

idea使用mybatis写增删改查

idea应用mybatis写增删改查 entity层 private Integer id;private String userCode;private String userName;private String userPassword;private Integer gender;private Date birthday;private String phone;private String address;private Integer userRole;private Intege

mybatis之增删改查

一. 简介: Mybatis本是apache的一个开源项目ibatis, 2010年这个项目由apache software foundation迁移到了google code, 并且改名为Mybatis. Mybatis是一个基于Java的持久层框架. 二. 增删改查: 1. 代码结构图: 2. User实体类: /** * User实体类 */ public class User { private String id; private String uname; // 注意: 该字段名称与

MyBatis基本增删改查操作

本文内容主要介绍单条记录的增删改查操作,MyBatis提供了很多完成单条记录的增删改查操作的API.本例主要讲述<UserMapper> UserMapper org.apache.ibatis.session.SqlSession.getMapper(Class<UserMapper> clazz)的使用.使用此API,我们需要创建UserMapper操作接口,函数名和MyBatis的User.xml配置文件中的操作id名对应. [转载使用,请注明出处:http://blog.c

Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍:此项目主要有前台管理员通过登录进入员工管理系统页面,之后可以对员工列表进行常规的增删改查.以及部门列表的增删改查.IDE使用的是eclipse,个人感觉比较好用,不过最近我正在研究idea,数据库是mysql,前台主要以bootstrap为主. 这点是直接摘抄的 struts 控制用的 hibern

上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。

1.引入依赖 <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency> <!-- Mybatis起步依赖 --> <dependency> <groupId>o

Hibernate进行对象的增删改查

首先我们看看hibernate手动配置步骤 (这个了解一点就可以了,以后是不会自己全部手动配置的) 1.    创建WEB项目 2       下载hibernate-release-4.3.11.Final.zip,并解压. 3       将hibernate必须的包加入lib 4        打开hibernate-release-4.3.11.Final\lib\required文件夹,导入jar文件: 5       打开hibernate-release-4.3.11.Final\