对于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注解。
写的不好的地方还请大家多多指教~。~
手机扫一扫
移动阅读更方便
你可能感兴趣的文章