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();
}
}