搭建ssh后的简化
阅读原文时间:2020年09月20日阅读:2

对于SSh框架的简化,我们可以从下面几个方面来剖析:

1、实体类entity

2.注入

3.类注解

下面,我来一一为大家讲解。ps:写的不好还请多多指教,欢迎大家”来找茬“。

关于实体类的简化,我们一般是将.hbm.xml文件删除,然后配着注解来实现简化,下面我们举一个简单的例子来体验实体类的简化给我们带来的便利

如下:

以前我们需要编写实体类.hbm.xml来完成映射


而现在,我们用了注解就不需要了,代码如下:

package news.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

/**
* @author Administrator
*
*/
@Entity
@Table(name="news")//这里的name对应的是数据库那边的表名
public class News {
private Integer id;
private String title;
private String content;
private Date begintime;
private String usename;

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)public Integer getId() {  
    return id;  
}  
public void setId(Integer id) {  
    this.id = id;  
}

@Column  
public String getTitle() {  
    return title;  
}  
public void setTitle(String title) {  
    this.title = title;  
}

@Column  
public String getContent() {  
    return content;  
}  
public void setContent(String content) {  
    this.content = content;  
}

@Column  
public Date getBegintime() {  
    return begintime;  
}  
public void setBegintime(Date begintime) {  
    this.begintime = begintime;  
}

@Column  
public String getUsename() {  
    return usename;  
}  
public void setUsename(String usename) {  
    this.usename = usename;  
}复制

}

接下来我们来看注入。

对于注入的简化,我的理解就是不需要new,把它交给spring去完成

而在这之前,我们都是定义一个私有属性,并给他设置set方法,然后在applicationContext.xml中设置如下



然而我们用上注解的话,applicationContext.xml文件就变成了这样



删除完映射文件,我们还需要在applicationContext.xml里面配置,如下:

这样才能知道她找到对应的实体类

当然我们所对应的Action,dao.service类都需要加上注解,如下:

package news.action;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import com.opensymphony.xwork2.ActionSupport;

import news.entity.News;
import news.service.NewsService;

public class NewsAction extends ActionSupport {
//@Resource(name="myNewsService") 这是jdk自带注解

@Autowired  
@Qualifier//这两个是spring的注解  
private NewsService ns;

private List<News> listAll;

private Integer id;

private String message;  
public List<News> getListAll() {

    return listAll;  
}

public void setId(Integer id) {  
    this.id = id;  
}

public Integer getId() {  
    return id;  
}

public String getMessage() {  
    return message;  
}

public void setMessage(String message) {  
    this.message = message;  
}

public String showAll(){  
    listAll=ns.showAll();  复制

// System.out.println(ns);
return "success";
}
public String deleteSingleNews(){
message=ns.deleteSingleNews(id);
return message;
}
}

package news.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import news.entity.News;

public class NewsDaoImpl implements NewsDao {
//@Resource(name="sessionFactory")
@Autowired
@Qualifier
private SessionFactory sf;

public List<News> showAll(){  
    Session session =sf.openSession();  
    //Session session=sf.getCurrentSession();  
    Query query=session.createQuery("from News");  
    List<News> listAll=query.getResultList();  
    return listAll;  
}  
public String deleteSingleNews(Integer id){  
    Session session =sf.openSession();  
    //Session session=sf.getCurrentSession();  
    Query query =session.createQuery("from News where id=:myid");  
    query.setParameter("myid", id);  
    List<News> deleteList=query.getResultList();

    String returnValue="fail";  
    if(deleteList.size()==1){  
        News news=deleteList.get(0);  
        session.getTransaction().begin();  
        session.delete(news);  
        returnValue="deleteList";  
        session.getTransaction().commit();  
        session.close();  
    }  
    return returnValue;  
}复制

}

package news.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import news.dao.NewsDao;
import news.entity.News;

public class NewsServiceImpl implements NewsService {
//@Resource(name="myNewsDao")
@Autowired
@Qualifier
private NewsDao nd=null;

public List<News> showAll(){  
    List<News> listAll=nd.showAll();  
    return listAll;

}

public String deleteSingleNews(Integer id){  
    String returnValue="fail";  
    returnValue=nd.deleteSingleNews(id);  
    return returnValue;  
}复制

}

上面的代码,之所以没用jdk自带的注解是因为?

我稍后给大家公布答案~.~

最后,我来给大家说说类注解吧。类注解是什么呢?

用我自己的话来说就是标签的类自动注册到spring容器。

接下来我们来看代码:

其他的都一样,所以后面的就不做批注了。

这了这一步,我们就来公布答案为什么不用jdk自带注解而用spring注解。

写的不好的地方还请大家多多指教~。~