SSH电力项目三

底层方法封装:模糊查询,姓张的人

TestService.java

package junit;public class TestService {

    @Test
    public void save(){
    ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
    IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);

    ElecText e = new ElecText();
    e.setTextName("abbbc");
    e.setTextDate(new Date());
    e.setTextRemark("deeef");
    elecTextService.saveElecText(e);

    }//
    @Test
    public void  findCollectionByConditionNopage(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);

        ElecText elecText = new ElecText();
        elecText.setTextName("张");
        elecText.setTextRemark("张");
        List<ElecText> list = elecTextService.findCollectionByConditionNopage(elecText);

        if(list != null && list.size() > 0){
            for(ElecText text:list){
                System.out.println(text.getTextName() + "+"+ text.getTextRemark());
            }
        }
    }
}

ElecTextService.java  接口:

package com.itheima.elec.service;public interface IElecTextService {

    public static final String SERVICE_NAME="com.itheima.elec.service.impl.ElecTextServiceImpl";
    void saveElecText(ElecText elecText);
    List<ElecText> findCollectionByConditionNopage(ElecText elecText);
}

ElecTextServiceImpl.java 接口

package com.itheima.elec.service.impl;
//事务控制:spring的声明事务处理,在service层添加@Transactional
@Service(IElecTextService.SERVICE_NAME)
@Transactional(readOnly=true)
public class ElecTextServiceImpl implements IElecTextService {

    @Resource(name=IElecTextDao.SERVICE_NAME)
    IElecTextDao elecTextDao;

    @Transactional(readOnly=false)
    public void saveElecText(ElecText elecText) {
        // TODO Auto-generated method stub
            elecTextDao.save(elecText);
    }

    @Override
    public List<ElecText> findCollectionByConditionNopage(ElecText elecText) {
        //查询条件
        String condition = "";
        //查询条件对应的参数
        List<Object> paramsList = new ArrayList<Object>();
//        if(elecText.getTextName() != null && !elecText.getTextName().equals("")){
//                condition += " and o.textName like ?";
//        }
        if(StringUtils.isNotBlank(elecText.getTextName())){
            condition += "  and o.textName like  ?";
            paramsList.add("%" + elecText.getTextName() + "%");
        }

        if(StringUtils.isNotBlank(elecText.getTextRemark())){
            condition += "  and o.textRemark like  ?";
            paramsList.add("%" + elecText.getTextRemark() + "%");
        }
        //传递可变参数
        Object [] params = paramsList.toArray();
        //排序
        Map<String, String> orderby = new LinkedHashMap<String,String>();
                orderby.put("o.textDate", "asc");
                orderby.put("o.textName", "desc");
      //查询
      List<ElecText> list = elecTextDao.findCollectionByConditionNoPage(condition,params,orderby);
      return list;
    }

}

ICommonDao.java

package com.itheima.elec.dao;public interface ICommonDao<T> {

    void save(T entity);
    void update(T entity);
    T findObjectById(Serializable id);
    void deleteObjectByIds(Serializable... ids);
    void deleteObjectByCollection(List<T> list);
    List<T> findCollectionByConditionNoPage(String condition, Object[] params, Map<String, String> orderby    );
}

ICommonDaoImpl.java

package com.itheima.elec.dao.impl;public class CommonDaoImpl<T>  extends HibernateDaoSupport implements ICommonDao<T> {

    //泛型转化
    Class entityClass = TUtils.getActualType(this.getClass());
    /**
     * 如何来实现这个save方法:通过HibernateDaoSupport 来实现,需要注入sessionFactory
     */
    @Resource
    public void setDi(SessionFactory sessionFactory){
        this.setSessionFactory(sessionFactory);
    }
    @Override
    public void save(T entity) {
        this.getHibernateTemplate().save(entity);
    }

    public void update(T entity){
        this.getHibernateTemplate().update(entity);
    }
    @Override
    public T findObjectById(Serializable id) {
//        Class entityClass = TUtils.getActualType(this.getClass());
        return (T) this.getHibernateTemplate().get(entityClass, id);   //entityClass 此处需要类型
    }
    @Override
    public void deleteObjectByIds(Serializable... ids) {
        if(ids != null && ids.length > 0){
            for(Serializable id:ids){
                Object entity = this.findObjectById(id);
                this.getHibernateTemplate().delete(entity);
            }
        }
//        this.getHibernateTemplate().delete(entity);
    }
    @Override
    public void deleteObjectByCollection(List<T> list) {
            this.getHibernateTemplate().deleteAll(list);
    }
    @Override
    /**
    这里1=1的目的是方便在Service层拼装sql或者hql语句,连接统一使用and
     * SELECT o FROM ElecText o WHERE 1=1             #Dao层填写
            AND o.textName LIKE ‘%张%‘                  #Service拼装
            AND o.textRemark LIKE ‘%张%‘                #Service拼装
            ORDER BY o.textDate ASC,o.textName desc   #Service拼装
     */
    public List<T> findCollectionByConditionNoPage(String condition, Object[] params, Map<String, String> orderby) {
        //hql语句
        String hql = "from " + entityClass.getSimpleName() + "  o where 1 = 1";
        //将Map集合中存放的字段排序,组织成ORDER BY o.textDate ASC, o.textName Desc
        String orderByCondition = this.orderByHql(orderby);
        //添加查询条件
        String finalHql = hql + condition + orderByCondition;
        //查询,执行sql语句
        //方法一:
        List<T> list = this.getHibernateTemplate().find(finalHql, params);

        return list;
    }
    private String orderByHql(Map<String, String> orderby) {
        StringBuffer buffer = new StringBuffer("");
        if(orderby != null && orderby.size() > 0){
            buffer.append(" ORDER BY ");
            for(Map.Entry<String, String> map:orderby.entrySet()){
                buffer.append(map.getKey() + " " + map.getValue() + ",");
            }
            //删除最后一个逗号
            buffer.deleteCharAt(buffer.length() - 1);
        }
        return buffer.toString();
    }
}

2017.1.11  11:58

时间: 2024-11-10 13:57:08

SSH电力项目三的相关文章

SSH电力项目一 搭建Hibernate框架

Hibernate所需要的基本文件: ElectText.java ElecText.hbm.xml hibernate.cfg.xml 第一步:创建测试表Elec_Text: create table Elec_Text(textID varchar(50) not null primary key,textName varchar(50),textDate datetime,textRemark varchar(500) ); 第二步:创建项目,导入jar包 第三步:持久层 (1)在com.

SSH电力项目二

底层方法封装(CommonDaoImpl类) public class CommonDaoImpl<T> extends HibernateDaoSupport implements ICommonDao<T> { //泛型转化 Class entityClass = TUtils.getActualType(this.getClass()); /** * 如何来实现这个save方法:通过HibernateDaoSupport 来实现,需要注入sessionFactory */ @

SSH电力项目九--运行监控首页显示

需求:在首页显示出设备运行情况,并去掉<br>换行符,每隔十分钟刷新一次页面. ElecMenuAction.java 首先注入运行监控service public class ElecMenuAction extends BaseAction<MenuForm>{ MenuForm menuForm = this.getModel(); //注入运行监控service @Resource(name=IElecCommonMsgService.SERVICE_NAME) IElec

android 实践项目三

android 实践项目三 本周我主要完成的任务是将代码进行整合,然后实现百度地图的定位与搜索功能.在这次实现的 图形界面如下: 在本周的工作中主要的实现出来定位与收索的功能,在地图中能实现了定位,显示当前的位置, 不知到为什么不显示地图,经过查找资料可能因为当前的SDK本版太高了,不匹配.所以在下周 图像的显示问题.下面是我的主要贴上我的布局代码 地图的布局: 本周的总结 做项目是学习知识最快的方式,即能让我们碰见各种问题,也让我们去解决各种问题.在项目中感觉自己 的水平有限,还需要更加努力的

SSH的项目中,使用getHibernateTemplate 与 getSession有什么的区别?优点与缺点是什么

SSH的项目中,使用getHibernateTemplate 与 getSession有什么的区别?优点与缺点是什么,谢谢回答! 悬赏分:0 - 解决时间:2008-10-7 09:42 SSH的项目中,使用getHibernateTemplate 与 getSession有什么的区别?优点与缺点是什么,谢谢回答! 问题补充:谢谢 451182 主要是想了解一下这两个关于事物这一块有什么不同?谢谢! 提问者: zhongbin007 - 试用期 一级 最佳答案 getHibernateTempl

综合项目三

综合项目三 项目背景: 我院107实验室是网络综合实验室,现有计算机若干台,使用一台二层交换机连接各台电脑.实验室出口是一块三层交换机,与1号楼的出口路由器相连.平时在实验室内,教师和学生能够相互通信.现发现部分同学实验课上偷偷上网.现在要求:实验课上老师和同学们能够通信,教师可以上网,同学们可以发送邮件等,不能访问www服务.假如你是107实验室管理员,请你完整以上要求. 计算机名 Ip 网关 掩码 Vlan SB F0/2 192.168.30.1/24 R1 F0/0 192.168.30

十一周 项目三 点类

#include<iostream> #include<Cmath> using namespace std; class Point //定义坐标点类 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0),y(y0){}; void PrintPoint(); //输出点的信息 double getx() { return x; } double gety() { return y; } protect

tomcat部署项目三种方法

1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法. 2.在tomcat安装目录中有一个conf文件夹,打开此文件夹,其中包含配置文件server.xml,打开配置文件,并在<host>和</host>之间插入如下语句. <Context    path="/hello"   docBase="F:\eclipse3.2\workspace\hello\WebRoot

个人项目三

五子棋 题目简介: 五子棋是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜.棋具与围棋通用,起源于中国上古时代的传统黑白棋种之一.主要流行于华人和汉字文化圈的国家以及欧美一些地区.容易上手,老少皆宜,而且趣味横生,引人入胜:不仅能增强思维能力,提高提高智力,而且富含哲理,有助于修身养性.已在各个游戏平台有应用. 结对分工: 宋德彪:写实验报告 程普楠:找代码,测试 https://github.com/xiaoliulang02