为什么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;
}}
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;
}}
解决方案 »
- jsp和html有什么区别
- 谁知道哪里有关于WS-R的学习资料,马上给分!!!!!急急急
- 有没有好的分页技术
- InitialContext initialContext = new InitialContext(props);中的参数props是不是可以任意指定?
- 求救,hibernate存入mysql的中文是???????乱码。
- jsp传值出现乱码.有什么办法解决.
- 高手们,谁能把怎样配置TomCat总结一下,让我们这些新手上上路?
- eclipse2.1.3,jboss3.2.5(tomcat5.0.26)整合resin
- mysql+jsp中文问题
- SpringBoot+SpringSocial开放QQ登陆,系统启动报RelaxedPropertyResolver找不到,这个类在spring哪个包里?
- JavaSSM框架+maven+tk.MyBatis
- 大佬们,关于POI的问题,HWPFDocument构造报错
页面报错是这样的:
Struts has detected an unhandled exception:Messages: 1????????????
1could not execute statement
File: com/microsoft/sqlserver/jdbc/SQLServerException.java
控制台提示的信息:
六月 28, 2018 1:39:56 下午 org.hibernate.hql.internal.ast.HqlSqlWalker generatePositionalParameter
WARN: [DEPRECATION] Encountered positional parameter near line 1, column 50 in HQL: [from com.edu.entity.user.User u where u.userName=?]. Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
Hibernate: select user0_.ID as ID1_2_, user0_.USERNAME as USERNAME2_2_, user0_.USERPASSWORD as USERPASS3_2_, user0_.USERREALNAME as USERREAL4_2_ from USER1 user0_ where user0_.USERNAME=?
Hibernate: insert into USER1 (USERNAME, USERPASSWORD, USERREALNAME) values (?, ?, ?)
六月 28, 2018 1:39:56 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: null
六月 28, 2018 1:39:56 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 已生成用于更新的结果集。
是利用数据库端的自动增长,需要在数据库端将主键设为自动增长。
如果没设的话设一下。
Hibernate: insert into USER1 (USERNAME, USERPASSWORD, USERREALNAME) values (?, ?, ?)
六月 28, 2018 4:21:16 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: null
六月 28, 2018 4:21:16 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 已生成用于更新的结果集。