Sql 语句
-- 以system登录 create user fav identified by bdqn; grant dba to fav; -- 以fav登录 create table FAVORITE ( F_ID NUMBER(19) not null, F_LABEL VARCHAR2(200 CHAR) not null, F_URL VARCHAR2(200 CHAR) not null, F_TAGS VARCHAR2(200 CHAR), F_DESC VARCHAR2(500 CHAR) ); alter table FAVORITE add primary key (F_ID); create table TAG ( T_ID NUMBER(19) not null, T_NAME VARCHAR2(100 CHAR) not null, T_COUNT NUMBER(19) not null ); alter table TAG add primary key (T_ID); -- 建了默认的序列 create sequence hibernate_sequence; insert into FAVORITE (F_ID, F_LABEL, F_URL, F_TAGS, F_DESC) values (hibernate_sequence.nextval, 'Spring', 'http://www.spring.org', 'spring', 'Spring官网'); commit; insert into TAG (T_ID, T_NAME, T_COUNT) values (hibernate_sequence.nextval, 'spring', 1); commit;
Favorite 实体类及映射文件
package cn.entity; @SuppressWarnings("serial") public class Favorite implements java.io.Serializable { private Integer id; private String label; private String url; private String tags; private String desc; @Override public String toString() { return "Favorite [id=" + id + ", label=" + label + ", url=" + url + ", tags=" + tags + ", desc=" + desc + "]"; } public Favorite() { super(); } public Favorite(String label, String url, String tags, String desc) { super(); this.label = label; this.url = url; this.tags = tags; this.desc = desc; } public Favorite(Integer id, String label, String url, String tags, String desc) { super(); this.id = id; this.label = label; this.url = url; this.tags = tags; this.desc = desc; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getTags() { return tags; } public void setTags(String tags) { this.tags = tags; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="cn.entity.Favorite" table="FAVORITE" schema="FAV"> <id name="id" type="java.lang.Integer"> <column name="F_ID" scale="0" /> <generator class="native" /> </id> <property name="label" type="java.lang.String"> <column name="F_LABEL" length="200" not-null="true" /> </property> <property name="url" type="java.lang.String"> <column name="F_URL" length="200" not-null="true" /> </property> <property name="tags" type="java.lang.String"> <column name="F_TAGS" length="200" /> </property> <property name="desc" type="java.lang.String"> <column name="F_DESC" length="500" /> </property> </class> </hibernate-mapping>
Tag 实体类及映射文件
package cn.entity; @SuppressWarnings("serial") public class Tag implements java.io.Serializable { private Integer id; private String name; private Integer count; @Override public String toString() { return "Tag [id=" + id + ", name=" + name + ", count=" + count + "]"; } public Tag() { super(); } public Tag(String name, Integer count) { super(); this.name = name; this.count = count; } public Tag(Integer id, String name, Integer count) { super(); this.id = id; this.name = name; this.count = count; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getCount() { return count; } public void setCount(Integer count) { this.count = count; } }
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="cn.entity.Tag" table="TAG" schema="FAV"> <id name="id" type="java.lang.Integer"> <column name="T_ID" scale="0" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="T_NAME" length="100" not-null="true" /> </property> <property name="count" type="java.lang.Integer"> <column name="T_COUNT" scale="0" not-null="true" /> </property> </class> </hibernate-mapping>
BaseDao Dao类
package cn.dao; import java.io.Serializable; import java.util.List; /** * BaseDao接口,包含常用的方法 */ public interface BaseDao<T> { /** * 查询所有的记录 */ List<T> findAll(Class<T> entityClass); /** * 根据主键加载一条数据。 * @param id 主键 * @return 查找到的数据 */ T get(Class<T> entityClass,Serializable id); /** * 添加数据到数据库。 * @param entity 将要添加的数据 * @return 包含了主键信息的数据 */ T add(T entity); /** * 根据主键删除数据。 * @param id */ void deleteById(Class<T> entityClass,Serializable id); /** * 更新数据。 * @param entity 将要更新的数据,包含主键信息 */ void update(T entity); /** * 查找数据。 * @param condition 查询条件 * @return 查询结果 */ List<T> find(T condition); /** * 查找数据。 * @param hql 查询语句 * @return 查询结果 */ List<T> find(String hql); /** * 查找数据。 * @param hql 查询语句 paramNames 参数名 values参数值 * @return 查询结果 */ List<T> find(String hql, String[] paramNames, Object[] values); }
package cn.dao.impl; import java.io.Serializable; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import cn.dao.BaseDao; /** * BaseDao 实现类 */ public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { @Override public T add(T entity) { super.getHibernateTemplate().save(entity); return entity; } @SuppressWarnings("unchecked") @Override public List<T> find(T condition) { return super.getHibernateTemplate().findByExample(condition); } @Override public void update(T entity) { super.getHibernateTemplate().update(entity); } @SuppressWarnings("unchecked") @Override public List<T> find(String hql) { return super.getHibernateTemplate().find(hql); } @SuppressWarnings("unchecked") @Override public List<T> find(String hql, String[] paramNames, Object[] values) { return super.getHibernateTemplate().findByNamedParam(hql, paramNames, values); } @Override public T get(Class<T> entityClass, Serializable id) { return super.getHibernateTemplate().get(entityClass, id); } @Override public void deleteById(Class<T> entityClass, Serializable id) { super.getHibernateTemplate().delete(this.get(entityClass, id)); } @Override public List<T> findAll(Class<T> entityClass) { return super.getHibernateTemplate().loadAll(entityClass); } }
FavDAO Dao类
package cn.dao; import java.util.List; import cn.entity.Favorite; /** * 收藏夹的DAO */ public interface FavDAO extends BaseDao<Favorite> { /** * 根据指定的类型查询收藏列表 * @param type * @return */ public List<Favorite> search(String type); }
package cn.dao.impl; import java.util.List; import cn.dao.FavDAO; import cn.entity.Favorite; public class FavDAOImpl extends BaseDaoImpl<Favorite> implements FavDAO { @Override public List<Favorite> search(String type) { String hql = "from Favorite f where 1=1"; if("-1".equals(type)){ //-1 指全部,什么也不处理 }else if("0".equals(type)){//0 表示未分类 hql +="and f.tags is null or f.tags=''"; }else if(type != null&&!"".equals(type)){ hql+="and f.tags like '%"+type+"%'"; } return super.find(hql); } }
TagDAO Dao类
package cn.dao; import java.util.List; import cn.entity.Tag; /** * 标签接口 */ public interface TagDAO extends BaseDao<Tag> { public List<Tag> search(Tag condition); /** * 根据标签名字查询标签 * @param tagName * @return */ public Tag get(String tagName); }
package cn.dao.impl; import java.util.List; import cn.dao.TagDAO; import cn.entity.Tag; public class TagDAOImpl extends BaseDaoImpl<Tag> implements TagDAO { @Override public Tag get(String tagName) { @SuppressWarnings("unchecked") List<Tag> rets = super.getHibernateTemplate().find("from Tag t where t.name = ?",tagName); if(rets.size() != 0){ return rets.get(0); } return null; } @Override public List<Tag> search(Tag condition) { if(condition==null){ return super.find("from Tag t order by t.name asc"); }else{ return super.find(condition); } } }
FavBiz 业务类
package cn.biz; import java.util.List; import cn.entity.Favorite; public interface FavBiz { public void add(Favorite fav); public List<Favorite> search(String type); }
package cn.biz.impl; import java.util.List; import cn.biz.FavBiz; import cn.biz.TagBiz; import cn.dao.FavDAO; import cn.entity.Favorite; public class FavBizImpl implements FavBiz { private FavDAO favDAO; public void setFavDAO(FavDAO favDAO) { this.favDAO = favDAO; } private TagBiz tagBiz; public void setTagBiz(TagBiz tagBiz) { this.tagBiz = tagBiz; } @Override public void add(Favorite fav) { //往 Fav 表中加入一条记录 favDAO.add(fav); String tags = fav.getTags(); //循环处理每一条标签 if(null != tags && !"".equals(tags.trim())){ String[] arrTags = tags.split(","); if(null != arrTags && arrTags.length > 0){ for (String tag : arrTags) { //调用另一个业务类的方法 tagBiz.dealWithTag(tag); } } } } @Override public List<Favorite> search(String type) { return this.favDAO.search(type); } }
TagBiz 业务类
package cn.biz; import java.util.List; import cn.entity.Tag; /** * 标签 * */ public interface TagBiz { /** * 通过标签名字进行处理 * @param tagName */ public void dealWithTag(String tagName); public List<Tag> search(Tag condition); }
package cn.biz.impl; import java.util.List; import cn.biz.TagBiz; import cn.dao.TagDAO; import cn.entity.Tag; public class TagBizImpl implements TagBiz { private TagDAO tagDAO; public void setTagDAO(TagDAO tagDAO) { this.tagDAO = tagDAO; } @Override public void dealWithTag(String tagName) { Tag tag = tagDAO.get(tagName); //有则加 1 更新 if(null != tag){ tag.setCount(tag.getCount()+1); tagDAO.update(tag); }else{ //没有则新加 1 个 tag = new Tag(); tag.setName(tagName); tag.setCount(1); tagDAO.add(tag); } } @Override public List<Tag> search(Tag condition) { return this.tagDAO.search(condition); } }
相关推荐
在IT行业中,SSH2(Secure Shell 2)通常指的是用于远程访问和安全通信的协议,而DAO(Data Access Object)模式则是一种常见的软件设计模式,主要用于数据库操作的抽象。这篇博客"ssh2 + dao泛型"结合了这两个概念...
- `src/main/java`:Java源代码,包括实体类(Entity)、DAO(Data Access Object)、Service、Action等。 - `src/main/resources`:配置文件,如Spring的`beans.xml`、Struts2的`struts.xml`、Hibernate的`...
return jdbcTemplate.update(sql, new Object[]{entity.getColumn1(), entity.getColumn2()}); } ``` 5. **事务管理**:由于数据库操作往往涉及到事务,因此需要在Service层进行事务控制。Spring提供声明式事务...
ASP.NET、WCF(Windows Communication Foundation)和Entity Framework是微软.NET框架下的三个核心技术,用于构建分布式企业级应用程序。在本文中,我们将深入探讨这三个组件以及它们如何协同工作。 **ASP.NET** ...
最后,`Entity Framework`(EF)是微软提供的一款ORM(Object-Relational Mapping)工具,它使得开发者可以使用.NET语言直接操作数据库,而无需编写大量的SQL语句。EF通过映射对象到数据库表,减少了数据访问层的...
这个主题"springboot+mybatis逆向生成controller+service+mapper+entity"是关于如何利用工具自动化创建CRUD(Create、Read、Update、Delete)操作的相关代码,包括Controller、Service、Mapper以及Entity类。...
在OA系统中,注解可以用来简化配置,例如Spring中的@Autowired自动注入,Hibernate的@Entity定义实体类等,使得代码更简洁,减少XML配置文件的繁琐。 5. **OA系统**:OA系统是企业信息化的重要组成部分,主要用于...
微信+MVC+EntityFramework Demo
修改webconfig的sql密碼後 遠行項目 隨便輸入什麼點登錄 會自動生成數據庫 生成數據庫之後執行下面的語句 添加種子數據 --數據庫種子數據 use EXTMVC insert [dbo].[users] values('tomoto','tomoto',1,'2014-05-06 ...
WCF+Silverlight+EntityFramework+Sqlite所做的学生信息管理系统,自己闲暇时间做着玩的,页面什么的比较丑,不过不要在意那些细节……数据库采用Sqlite,非常小的一个数据库,我就不提供了,网上一大堆,表结构什么...
我的第一个ASP.NET MVC(WebApi) + Entity FrameWork+ Unity+Redis+Sql Server-Other架构的web开发架构设计_EFMvcFrameApp
例如,`@Entity`注解标识一个类为数据库中的表,`@Table`注解指定对应的表名,`@Id`定义主键字段,`@Column`定义列属性,`@Repository`注解标记数据库访问对象,`@Service`和`@Transactional`注解用于服务层的事务...
它允许开发者使用面向对象的方式来操作数据库,无需关注底层SQL语句,大大简化了数据访问层的开发工作。EF的核心概念包括实体(Entity)、上下文(DbContext)、数据模型(Data Model)和映射(Mapping)。 在CMS...
NHinbernate+LINQ+Entity Framework完成的课程设计平台,分为website和project两个部分,project主要是nhibernate,linq和ef在website的app_Code中。 数据库使用sql 2008.
NHinbernate+LINQ+Entity Framework完成的课程设计平台,分为website和project两个部分,project主要是nhibernate,linq和ef在website的app_Code中。 数据库使用sql 2008 该部分是nhibernate
Entity Framework (EF)是.NET框架下的一个ORM工具,它允许开发者使用面向对象的方式来操作数据库,而无需关注底层SQL语句。EF Core是其轻量级、跨平台的版本,与ASP.NET Core完美配合。在这个学习过程中,你将学习到...
ASP.NET MVC+EntityFramework项目实例,功能 页面登录,分页,用户添加,编辑以及关键词查询等
自己搭建的 .Net系列框架-Dapper+EntityFrameworkCore+Autofac+WebApi+Web 详细介绍见:https://blog.csdn.net/zhangjiankun880/article/details/106540475
**标题:“WPF+EntityFramework6Demo”** 这个标题表明我们正在探讨一个使用Windows Presentation Foundation (WPF) 和 Entity Framework 6 (EF6) 的演示项目。WPF 是微软提供的一个用于构建桌面应用程序的框架,它...
WPF+Entity Frame的Database first模式,使用用户指定的连接字符串的方法,我也曾在网上找了很久,基本没看到有明确说明的,也没有想过示例。 终于结合相关人的描述让我找到了修改的地方。压缩包内为原版工程代码,...