为什么Hibernate可以实现SQL Server查询和删除修改的功能,但是不能进行插入
为什么Hibernate可以实现SQL Server查询和删除修改的功能,但是不能进行插入
数据库
ID int 主键
USERNAME varchar(255)
USERPASSWORD varchar(255)
USERREALNAME varchar(255)
hibernate配置文件User.hbm.xml
<hibernate-mapping>
<class name="com.edu.entity.user.User" table="USER1">
<id name="userId" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="USERNAME" />
</property>
<property name="userPassword" type="java.lang.String">
<column name="USERPASSWORD" />
</property>
<property name="userRealName" type="java.lang.String">
<column name="USERREALNAME" />
</property>
</class>
</hibernate-mapping>
对数据库的操作
package com.edu.dao;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
public class DaoHibernate<T> implements IBaseDao<T> {
@Resource//@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public int insert(T o) {
sessionFactory.getCurrentSession().save(o);
return 1;
}
@Override
public int insertList(List<T> list) {
for (T t : list) {
insert(t);
}
return list.size();
}
@Override
public int update(T o) {
sessionFactory.getCurrentSession().update(o);
return 1;
}
@Override
public int deleteList(Class c, int[] ids) {
for (int id : ids) {
delete(c, id);
}
return ids.length;
}
@Override
public int delete(T o) {
sessionFactory.getCurrentSession().delete(o);
return 1;
}
@Override
public int delete(Class c, int id) {
Session s = sessionFactory.getCurrentSession();
s.delete(s.load(c, id));
return 1;
}
@Override
public T findById(Class c, int id) {
return (T) sessionFactory.getCurrentSession().get(c, id);
}
@Override
public T findOne(String hql, String[] param) { // 查询单条记录
Session s = sessionFactory.getCurrentSession();
Query query = s.createQuery(hql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
query.setParameter(i, param[i]);
}
}
return (T) query.uniqueResult();
}
@Override
public List<T> find(String hql, String[] param) {
List<T> list = null;
Session s = sessionFactory.getCurrentSession();
Query query = s.createQuery(hql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
query.setParameter(i, param[i]);
}
}
return query.list();
}
@Override
public List<T> findPage(String hql, String[] param, int page, int size) { // 分页查找所有对象
List<T> list = null;
Session s = sessionFactory.getCurrentSession();
Query query = s.createQuery(hql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
query.setParameter(i, param[i]);
}
}
// 筛选条数
query.setFirstResult((page - 1) * size);
query.setMaxResults(size);
return query.list();
}
@Override
public int getCount(String hql, String[] param) {// 返回数据个数
int resu = 0;
Session s = sessionFactory.getCurrentSession();
Query q = s.createQuery(hql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
q.setString(i, param[i]);
}
}
resu = Integer.valueOf(q.iterate().next().toString());
return resu;
}
@Override
// 单字段模糊查询
public List<T> findByFields(String hql, String fields[], String condition) {
Session s = null;
String findhql = hql;
if (fields != null && condition != null && fields.length > 0
&& !condition.equals("")) {
findhql = findhql + " where 1=1 and (";
for (int i = 0; i < fields.length - 1; ++i) {
findhql += fields[i] + " like '%" + condition + "%' or ";
}
findhql += fields[fields.length - 1] + " like '%" + condition
+ "%') ";
}
s = sessionFactory.getCurrentSession();
Query query = s.createQuery(findhql);
List<T> list = query.list();
return list;
}
}
package com.edu.dao.user;
import org.springframework.stereotype.Repository;
import com.edu.dao.DaoHibernate;
import com.edu.entity.user.User;
@Repository
public class UserDao extends DaoHibernate<User> {
// 通过姓名、密码查询用户
public User findBynameAndPassword(User user) {
String hql = "from User u where u.userName=? and u.userPassword=?";
String param[] = { user.getUserName(), user.getUserPassword() };
User user1 = this.findOne(hql, param);
return user1;
}
// 通过姓名查询用户
public User findByname(User user) {
String hql = "from User u where u.userName=?";
String param[] = { user.getUserName() };
User user1 = this.findOne(hql, param);
return user1;
}
// 修改用户密码: 修改 对象user的密码为newPasswoed
public int updatePassword(User user, String newPassword) {
User user1 = this.findBynameAndPassword(user);
//judge user1 null
if(user1!=null) {
user1.setUserPassword(newPassword);
return this.update(user1);}
else
return 0;
}
}