SSH 통합: DAO 프레임워크(BaseDao)를 사용하여 DAO는 쓰지 않거나 적게 쓰므로 업무에 더욱 집중할 수 있습니다.
여기에 BaseDao를 새로 만들어서 일반 Dao(예를 들어 UserDao)가 그것을 계승하도록 합니다. 이렇게 하면 일반 Dao는 아무것도 쓰지 않고 기본적인 삭제 수정 작업을 자동으로 실현할 수 있고 UserDao에서 방법을 확장할 수 있습니다.
BaseDao.java:
package com.kaishengit.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.kaishengit.util.ReflectUtil;
public class BaseDao {
private SessionFactory sessionFactory;
//Class>: , , , Object
private Class> entityClass;
public BaseDao(){
//new , this this
entityClass = ReflectUtil.getGenericParameterType(this.getClass());
}
public void saveOrUpdate(T t){
getSession().saveOrUpdate(t);
}
public void del(PK pk){
getSession().delete(findById(pk));
}
public void del(T t){
getSession().delete(t);
}
@SuppressWarnings("unchecked")
public T findById(PK pk){
return (T) getSession().get(entityClass, pk);
}
@SuppressWarnings("unchecked")
public List findAll(){
Criteria criteria = getSession().createCriteria(entityClass);
return criteria.list();
}
@SuppressWarnings("unchecked")
public List findByPage(int start,int count){
Criteria criteria = getSession().createCriteria(entityClass);
criteria.setFirstResult(start);
criteria.setMaxResults(count);
return criteria.list();
}
//get
public Session getSession(){
return sessionFactory.getCurrentSession();
}
//set
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
반사를 통해 되돌아오는 실제 매개 변수화 유형 T
package com.kaishengit.util;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class ReflectUtil {
public static Class> getGenericParameterType(Class> clazz){
// Class ( 、 、 void) Type。 , Type 。
Type type = clazz.getGenericSuperclass();
// :Collection
ParameterizedType pt = (ParameterizedType) type;
// Type 。
Type[] types = pt.getActualTypeArguments();
return (Class>) types[0];
}
}
이렇게 하면 OK입니다. 저희가 Userdao를 새로 만들어서 계승하겠습니다. 그러면 Userdao는 자동으로 삭제 및 수정 기능을 가지게 됩니다. 흥분되지 않습니까? 안에 또 하나의 방법을 추가했습니다.
package com.kaishengit.dao;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import com.kaishengit.pojo.User;
@Repository
public class UserDao extends BaseDao{
public User findByNameAndPassword(User user){
String hql = "from User where username = ? and password = ?";
Query query = getSession().createQuery(hql);
query.setParameter(0, user.getUsername());
query.setParameter(1, user.getPassword());
return (User) query.uniqueResult();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SSH를 통해 MySQL 연결 -> SQL 실행을 한 번에하려고 헛된 이야기SSH 경유로 MySQL 접속->SQL 실행을 1발로 하는 것으로-! ! (`Δ´) 1. 우선, 발판 서버에 액세스하기 때문에 2.다음에 mysql에 접속하고 싶으니까 3. 마지막으로 실행하려는 SQL은 4. 이 3...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.