SQL 语句
create user OnlineDB identified by 123456;
grant connect,resource to OnlineDB;
-- Oracle 删除用户
--drop user OnlineDB cascade;
--问题表
create table questions (
id number(10) primary key not null,--问题 id
title varchar2(100) not null,-- 问题名
detailDesc varchar2(300) null,-- 问题描述
ansewerCount number(10) not null,--回答次数
lastModidfied date null--最后修改时间
);
--应答表
create table answers (
id number(10) primary key not null,--答案 id
ansContent varchar2(300) not null,--答案内容
ansDate date null,--回答时间
qid number(10) not null,--问题 id
foreign key(qid) references questions(id)--约束
);
create sequence seq_questions increment by 1 start with 1 cache 10;
create sequence seq_answers increment by 1 start with 1 cache 10;
insert into questions
(id, title, detaildesc, ansewercount, lastmodidfied)
values
(seq_questions.nextval, '这是问题1', '这是描述1', 1, to_date('1999-10-16','yyyy-mm-dd'));
insert into questions
(id, title, detaildesc, ansewercount, lastmodidfied)
values
(seq_questions.nextval, '这是问题2', '这是描述2', 1, to_date('1999-10-16','yyyy-mm-dd'));
insert into questions
(id, title, detaildesc, ansewercount, lastmodidfied)
values
(seq_questions.nextval, '这是问题3', '这是描述3', 1, to_date('1999-10-16','yyyy-mm-dd'));
insert into questions
(id, title, detaildesc, ansewercount, lastmodidfied)
values
(seq_questions.nextval, '这是问题4', '这是描述4', 1, to_date('1999-10-16','yyyy-mm-dd'));
insert into questions
(id, title, detaildesc, ansewercount, lastmodidfied)
values
(seq_questions.nextval, '这是问题5', '这是描述5', 1, to_date('1999-10-16','yyyy-mm-dd'));
insert into answers
(id, anscontent, ansdate, qid)
values
(seq_answers.nextval, '这是回答1', to_date('1999-10-16','yyyy-mm-dd'), 2);
insert into answers
(id, anscontent, ansdate, qid)
values
(seq_answers.nextval, '这是回答2', to_date('1999-10-16','yyyy-mm-dd'), 3);
insert into answers
(id, anscontent, ansdate, qid)
values
(seq_answers.nextval, '这是回答3', to_date('1999-10-16','yyyy-mm-dd'), 4);
select id, anscontent, ansdate, qid from answers;
select id, title, detaildesc, ansewercount, lastmodidfied from questions
Duestions 实体类及映射文件
package cn.entity;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* 问题表
* */
@SuppressWarnings("serial")
public class Duestions implements java.io.Serializable {
private Integer id;//问题 id
private String title;//问题名
private String detaildesc;//问题描述
private Integer ansewercount;//回答次数
private Date lastmodidfied;//最后修改时间
@SuppressWarnings("rawtypes")
private Set answerses = new HashSet(0);//多对一映射
@Override
public String toString() {
return "Duestions [id=" + id + ", title=" + title + ", detaildesc="
+ detaildesc + ", ansewercount=" + ansewercount
+ ", lastmodidfied=" + lastmodidfied + "]";
}
public Duestions() {
}
public Duestions(String title, Integer ansewercount) {
this.title = title;
this.ansewercount = ansewercount;
}
@SuppressWarnings("rawtypes")
public Duestions(String title, String detaildesc, Integer ansewercount,
Date lastmodidfied, Set answerses) {
this.title = title;
this.detaildesc = detaildesc;
this.ansewercount = ansewercount;
this.lastmodidfied = lastmodidfied;
this.answerses = answerses;
}
public Duestions(String title, String detaildesc, Integer ansewercount,
Date lastmodidfied) {
this.title = title;
this.detaildesc = detaildesc;
this.ansewercount = ansewercount;
this.lastmodidfied = lastmodidfied;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetaildesc() {
return this.detaildesc;
}
public void setDetaildesc(String detaildesc) {
this.detaildesc = detaildesc;
}
public Integer getAnsewercount() {
return this.ansewercount;
}
public void setAnsewercount(Integer ansewercount) {
this.ansewercount = ansewercount;
}
public Date getLastmodidfied() {
return this.lastmodidfied;
}
public void setLastmodidfied(Date lastmodidfied) {
this.lastmodidfied = lastmodidfied;
}
@SuppressWarnings("rawtypes")
public Set getAnswerses() {
return this.answerses;
}
@SuppressWarnings("rawtypes")
public void setAnswerses(Set answerses) {
this.answerses = answerses;
}
}
seq_questions
Answers 实体类及映射文件
package cn.entity;
import java.util.Date;
/**
* 应答表
* */
@SuppressWarnings("serial")
public class Answers implements java.io.Serializable {
private Integer id;//答案 id
private Duestions duestions;//一对多映射
private String anscontent;//答案内容
private Date ansdate;//回答时间
@Override
public String toString() {
return "Answers [id=" + id + ", anscontent=" + anscontent + ", ansdate=" + ansdate + "]";
}
public Answers() {
}
public Answers(Duestions duestions, String anscontent) {
this.duestions = duestions;
this.anscontent = anscontent;
}
public Answers(Duestions duestions, String anscontent, Date ansdate) {
this.duestions = duestions;
this.anscontent = anscontent;
this.ansdate = ansdate;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Duestions getDuestions() {
return this.duestions;
}
public void setDuestions(Duestions duestions) {
this.duestions = duestions;
}
public String getAnscontent() {
return this.anscontent;
}
public void setAnscontent(String anscontent) {
this.anscontent = anscontent;
}
public Date getAnsdate() {
return this.ansdate;
}
public void setAnsdate(Date ansdate) {
this.ansdate = ansdate;
}
}
seq_answers
DuestionsDao DAO类
package cn.dao;
import java.util.List;
import cn.entity.Duestions;
/**
* 问题表 DAO
* */
public interface DuestionsDao {
/**
* 查询问题表列表
* @return
*/
List findAll();
/**
* 根据 id 查询问题表的一条数据
* @param id
* @return
*/
Duestions findById(Integer id);
/**
* 添加问题表数据
* @param duestions
*/
void add(Duestions duestions);
/**
* 修改问题表数据
* @param duestions
*/
void update(Duestions duestions);
}
package cn.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.dao.DuestionsDao;
import cn.entity.Duestions;
public class DuestionsDaoImpl extends HibernateDaoSupport implements
DuestionsDao {
@SuppressWarnings("unchecked")
@Override
public List findAll() {
return super.getHibernateTemplate().find("from Duestions");
}
@Override
public Duestions findById(Integer id) {
return (Duestions) super.getHibernateTemplate().get(Duestions.class,id);
}
@Override
public void add(Duestions duestions) {
super.getHibernateTemplate().save(duestions);
}
@Override
public void update(Duestions duestions) {
super.getHibernateTemplate().update(duestions);
}
}
AnswersDao DAO类
package cn.dao;
import java.util.List;
import cn.entity.Answers;
/**
* 应答表 DAO
* */
public interface AnswersDao {
/**
* 插入应答表数据
* @param answers
*/
void insert(Answers answers);
/**
* 根据外键查询应答表列表
* @param qid
* @return
*/
List findAnswersList(Integer qid);
}
package cn.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.dao.AnswersDao;
import cn.entity.Answers;
public class AnswersDaoImpl extends HibernateDaoSupport implements AnswersDao {
@Override
public void insert(Answers answers) {
super.getHibernateTemplate().save(answers);
}
@SuppressWarnings("unchecked")
@Override
public List findAnswersList(Integer qid) {
return (List) super.getHibernateTemplate().find("from Answers a where a.duestions.id ="+qid);
}
}
DuestionsBiz 业务类
package cn.biz;
import java.util.List;
import cn.entity.Answers;
import cn.entity.Duestions;
/**
* 问题表 业务类
* */
public interface DuestionsBiz {
/**
* 查询问题表列表
* @return
*/
List findAll();
/**
* 根据 id 查询问题表的一条数据
* @param id
* @return
*/
Duestions findById(Integer id);
/**
* 插入应答表数据
* @param answers
*/
void insert(Answers answers);
/**
* 添加问题表数据
* @param duestions
*/
void add(Duestions duestions);
/**
* 根据外键查询应答表列表
* @param qid
* @return
*/
List findAnswersList(Integer qid);
/**
* 修改问题表数据
* @param duestions
*/
void update(Duestions duestions);
}
package cn.biz.impl;
import java.util.List;
import cn.biz.DuestionsBiz;
import cn.dao.AnswersDao;
import cn.dao.DuestionsDao;
import cn.entity.Answers;
import cn.entity.Duestions;
public class DuestionsBizImpl implements DuestionsBiz {
private AnswersDao answersDao;
private DuestionsDao duestionsDao;
public void setAnswersDao(AnswersDao answersDao) {
this.answersDao = answersDao;
}
public void setDuestionsDao(DuestionsDao duestionsDao) {
this.duestionsDao = duestionsDao;
}
@Override
public List findAll() {
return duestionsDao.findAll();
}
@Override
public Duestions findById(Integer id) {
return duestionsDao.findById(id);
}
@Override
public void insert(Answers answers) {
answersDao.insert(answers);
}
@Override
public void add(Duestions duestions) {
duestionsDao.add(duestions);
}
@Override
public List findAnswersList(Integer qid) {
return answersDao.findAnswersList(qid);
}
@Override
public void update(Duestions duestions) {
duestionsDao.update(duestions);
}
}
DuestionsTest 测试类
package cn.test;
import java.util.Date;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.biz.DuestionsBiz;
import cn.entity.Answers;
import cn.entity.Duestions;
public class DuestionsTest {
DuestionsBiz duestionsBiz;
static ApplicationContext ctx;
@BeforeClass
public static void init(){
ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
}
@Before
public void setUp(){
duestionsBiz=(DuestionsBiz) ctx.getBean("duestionsBiz");
}
@After
public void tearDown(){
duestionsBiz=null;
}
@AfterClass
public static void destory(){
ctx=null;
}
//@Test
public void testFindAll(){
List dList = duestionsBiz.findAll();
for (Duestions duestions : dList) {
System.out.println(duestions);
}
}
@Test
public void testFindById(){
Duestions duestions = duestionsBiz.findById(2);
System.out.println(duestions);
}
//@Test
public void testInsert(){
Duestions duestions = duestionsBiz.findById(2);
Answers answers = new Answers(duestions,"这是回答XX", new Date());
duestionsBiz.insert(answers);
}
//@Test
public void testFindAnswersList(){
List answers = duestionsBiz.findAnswersList(2);
for (Answers answer : answers) {
System.out.println(answer);
}
}
//@Test
public void testAdd(){
Duestions duestions = new Duestions("这是title", 1);
duestionsBiz.add(duestions);
}
//@Test
public void testUpdate(){
List answers = duestionsBiz.findAnswersList(2);
Duestions duestions = new Duestions();
duestions.setId(2);
duestions.setTitle("工");
duestions.setAnsewercount(answers.size());
duestionsBiz.update(duestions);
}
}