Jeecms开发学习笔记
}
public CmsGuestbook save(CmsUser member, Integer siteId, Integer ctgId, }
String ip, String title, String content, String email, String phone, String qq) {
CmsGuestbook guestbook = new CmsGuestbook(); guestbook.setMember(member);
guestbook.setSite(cmsSiteMng.findById(siteId)); guestbook.setIp(ip);
CmsGuestbookExt ext = new CmsGuestbookExt(); ext.setTitle(title); ext.setContent(content); ext.setEmail(email); ext.setPhone(phone); ext.setQq(qq);
return save(guestbook, ext, ctgId, ip);
这里必须知道的是,title,content,email,phone,qq是封装进CmsGuestbookExt里的,ctgId是在CmsGuestbookCtg里的,所以在这个实现类中还会有:
private CmsGuestbookCtgMng cmsGuestbookCtgMng; private CmsGuestbookExtMng cmsGuestbookExtMng;
第 11 页 共 18 页
Jeecms开发学习笔记
@Autowired {
@Autowired public
void
setCmsGuestbookCtgMng(CmsGuestbookCtgMng
}
this.cmsGuestbookExtMng = cmsGuestbookExtMng;
public void setCmsGuestbookExtMng(CmsGuestbookExtMng cmsGuestbookExtMng)
cmsGuestbookCtgMng) {
}
this.cmsGuestbookCtgMng = cmsGuestbookCtgMng;
封装进不同实体有很大的好处,可以防止在字段很多的情况下不会出现因为方法字段不是一一对应的,而出现映射混乱的问题(一般表现为有些字段储存入其他字段,而本身字段为Null)。当然代码也不会繁琐,隐藏bug少,便于数据管理。当然也有其坏处,会使得存储和查询效率降低,但是一般门户流量小,数据少,这些坏处可以忽略。
第二个红色框框标记的部分,是return上一个方法,封装到一个bean,MngImpl这一实现类,存储过程一般最后都要封装进一个bean的。
第一个红色框框走了dao接口,注意下面的代码声明了dao的注入:
@Autowired
public void setDao(CmsGuestbookDao dao) { }
this.dao = dao;
第 12 页 共 18 页
Jeecms开发学习笔记
3.3Dao和DaoImpl
3.3.1什么是Dao和DaoImpl?
也就是dao接口和实现类,是数据访问层的重要的类。因为Jeecms使用hibernate技术,且映射关系并不复杂(针对guestbook来说,包括one to one的guestbookext,many to one的guestbookctg,但是并不难理解),而且并不需要多么复杂的数据处理。对于小型门户,hibernate就够用了。Dao和DaoImpl与Mng和MngImpl的理解是相似的,不详细介绍了。
4.实体类
4.1为什么使用实体类?
我们找一个简单的例子:
import javax.persistence.Column; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator; @Entity
@Table(name=\public class User {
第 13 页 共 18 页
Jeecms开发学习笔记
@Id
@GeneratedValue(generator=\
@GenericGenerator(name = \@Column(length=32) private String id;
@Column(length=32) private String userName;
public String getId() { }
return id;
public void setId(String id) { }
this.id = id;
public String getUserName() { }
return userName;
public void setUserName(String userName) {
第 14 页 共 18 页
Jeecms开发学习笔记
}
}
this.userName = userName;
注意到username都是private,而他的get和set方法都是public,这意味这什么呢?外面的方法是无法访问到username的,只有使用get和set方法访问,这样保证了username的安全性,不会因为代码误编而导致错误。Java就是面向对象编程,这句话大家都是知道的,装进一个实体里,这样就很容编译了,这就是为什么使用实体。
4.2id的作用
再看guestbook的两个实体CmsGuestbook和它的父类BaseGuestbook,关于它的字段以及get和set方法我们就不再赘述,看下面的代码:
false;
else {
com.jeecms.cms.entity.assist.CmsGuestbook
cmsGuestbook
=
public boolean equals (Object obj) {
if (null == obj) return false;
if (!(obj instanceof com.jeecms.cms.entity.assist.CmsGuestbook)) return
(com.jeecms.cms.entity.assist.CmsGuestbook) obj;
}
}
if (null == this.getId() || null == cmsGuestbook.getId()) return false; else return (this.getId().equals(cmsGuestbook.getId()));
public int hashCode () {
if (Integer.MIN_VALUE == this.hashCode) {
第 15 页 共 18 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Jeecms开发学习笔记(3)在线全文阅读。
相关推荐: