一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天,点击查看活动详情。
这一章节主要讲校园二手商品交易系统的DAO层代码的功能。
public User findByUser(User user) {
String hql="from User u where u.userName=? and u.password=?";
List<User> list=this.getHibernateTemplate().find(hql,user.getUserName(),user.getPassword());
if(list.size()>0){
return list.get(0);
}else{
return null;
}
}
通过账号和密码查询用户,hql是hibernate的专属sql语句,getHibernateTemplate()是hibernate的数据库驱动Template,传过去的参数有用户名和密码。 如果查询到了,直接返回,如果没查询到,返回空。
查询管理员数量
int findAdminCount();
分页查询管理员列表
List<Admin> findAllAdminInfo(int begin, int pageSize);
查询用户数量
int findUserCount(String name);
分页查询用户列表
List<User> findAllUserInfo(int begin, int pageSize,String name);
查询分类数量
int findCateCount(String name);
分页查询分类列表
List<Classify> findAllCateInfo(int begin, int pageSize, String name);
查询商品数量
int findProductCount(String name, int cate, int type);
查询商品列表
List<Product> findAllProductInfo(int begin, int pageSize, String name, int cate, int type);
分类列表查询
List<Classify> findAllCateList();
查询商品详情
Product searchProductDetail(int pid);
删除商品
void delectProductById(int pid);
查询用户详情
User searchUserDetail(int uid);
删除分类
void delectCateById(int id);
删除管理员
void delectAdminById(int id);
新增管理员
void addAdmin(Admin admin);
通过管理员帐户查询
Admin findAdminByName(String name);
通过id查询管理员信息
Admin findAdminById(Integer aid);
修改管理员
void updateAdmin(Admin admin);
根据分类名称查询分类信息
Classify findCateByName(String classifyName);
新增分类
void addCate(Classify cassify);
修改分类
void updateCate(Classify cassify);
后台删除商品发送通知给用户
void saveSystemMessage(UserAndAdmin uaa);
public int findUserCount(String name) {
StringBuffer br=new StringBuffer();
String hql="select count(*) from User " ;
if(name!=null){
String uname="%"+name+"%";
br.append("where userName like '"+uname+"'");
}
@SuppressWarnings("unchecked")
List<Long> list=this.getHibernateTemplate().find(hql+br.toString());
if(list.size()>0){
return list.get(0).intValue();
}
return 0;
}
统计用户数量,判断前端传过来的用户名字,如果不为空,那么就在sql语句那里拼接name,用的是append方法。@SuppressWarnings注解的作用是忽略报错。this.getHibernateTemplate().find(hql+br.toString());执行sql语句,查到有数据,返回值,没有数据,返回0.
public List<User> findAllUserInfo(int begin, int pageSize,String name) {
String uname="%"+name+"%";
DetachedCriteria dc=DetachedCriteria.forClass(User.class)
.add(Restrictions.like("userName", uname, MatchMode.ANYWHERE))
.addOrder(Order.desc("uid"));
@SuppressWarnings("unchecked")
List<User> list=this.getHibernateTemplate().findByCriteria(dc, begin, pageSize);
return list;
}
查询所有的用户信息,条件userName,用的是ANYWHERE,那么任意查询条件,后面的addOrder是根据uid进行排序。这个代码理解难度大一点,毕竟代码也不好写。