java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...
前几天写了简单的从页面对数据库进行的操作,下面对该功能进行升级,操作两张相关联的表;上次是对新闻类型的修改,我在这里就不重复了,可以查看我之前的博客,
首先从页面说起:
页面部分:
页面部分我用了10个JSP完成的如图:
也就是比上次的多了几个news后缀的几根文件
1、添加新闻内容
addnews,代码如下
request.setCharacterEncoding("UTF-8");
String title=request.getParameter("title");//获取文本框输入的值
String contain=request.getParameter("contain");//获取文本框输入的值
String autor=request.getParameter("autor");//获取文本框输入的值
String typeid=request.getParameter("typeid");//获取文本框输入的值
if(title!=null){
//新建构造函数里面的对象
news n=new news(title,contain,autor,Integer.parseInt(typeid));
//新建Servlet层对象
NewsServlet ns=new NewsServlet();
int a=ns.addnews(n);//注意里面的参数,是news里面的参数,传news对象
if(a>0){
//添加成功跳到show界面
response.sendRedirect("shownews.jsp"); //添加成功转到查看页面
}else{
//添加失败在本界面界面
response.sendRedirect("addnews.jsp"); //添加成功转到查看页面
}
}
%>
这是添加新闻内容界面
标题:
内容:
作者:
类型:
//servlet对象//遍历寻找类型
Type_NewsServlet tn=new Type_NewsServlet();
List list=tn.selectall();//调用其中的查看全部的方法
for(int i=0;i
type_news tpn=list.get(i);
%>
}
%>
shownews.jsp(用来查看页面)
代码如下:
function delete_(id){
var f=confirm("是否确定删除?");
if(f){
location.href="shownews.jsp?ids="+id;
}else{
alert("您取消删除");
}
}
function update(id){
location.href="updatenews.jsp?ids="+id;
}
String id=request.getParameter("ids");
if(id!=null){
NewsServlet ns=new NewsServlet();
int a =ns.delete(Integer.parseInt(id)); // us.deleten(Integer.parseInt(id));
response.sendRedirect("shownews.jsp");
}
%>
这是展示界面
编号 | 标题 | 内容 | 作者 | 类型 | 操作 |
//调用Servlet取到数据
NewsServlet ns=new NewsServlet();
List list =new ArrayList();
list=ns.selectall(null);
for(int i=0;i
news n=list.get(i);
%>
)" value="修改"/>
)" value="删除"/>
}
%>
updatenews.jsp(更新)
代码如下:
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("ids");
NewsServlet tsl=new NewsServlet(); //导包
news ts=new news();//导包
String type= request.getParameter("type");
if(type!=null){
String id1=request.getParameter("id");
String title=request.getParameter("title");//从下面的输入取值
String contain=request.getParameter("contain");
String autor=request.getParameter("autor");
ts.setId(Integer.parseInt(id1));//强转
ts.setTitle(title);
ts.setContain(contain);
ts.setAutor(autor);
int a=tsl.update(ts);
response.sendRedirect("shownews.jsp");
}else{
if(id!=null){
ts=tsl.selectone(Integer.parseInt(id));
}
}
%>
修改新闻界面
标题:
内容:
作者:
接下来是后台程序:
servlet层:
代码如下:
public class NewsServlet {
//新建后面层的对象,方便调用方法
NewsService ns=new NewsServiceImp();
/**********添加新闻内容***************************************************/
public int addnews(news n){
int a=0;
a=ns.addnews(n);
return a;
}
/**********查看新闻内容***************************************************/
public List selectall(news n){
List list=ns.selectall(null);
return list;
}
/**********删除新闻内容***************************************************/
public int delete(int id){
int a=0;
a=ns.delete(id);
return a;
}
/**********查找一个新闻内容***************************************************/
public news selectone(int id){
news nn=ns.selectone(id);
return nn;
}
/**********更新新闻内容***************************************************/
public int update(news s){
int a=0;
a=ns.update(s);
return a;
}
}
service层:
代码如下:
public interface NewsService {
public int addnews(news n);
public List selectall(news n);
public int delete(int id);
public news selectone(int id);
public int update(news s);
}
ServiceImp程序:
public class NewsServiceImp implements NewsService{//接口
//新建后面层的对象,方便调用方法
NewsDao nd=new NewsDaoImp();
/**********添加新闻内容***************************************************/
public int addnews(news n) {
int a=0;
a=nd.addnews(n);
return a;
}
/**********查看新闻内容***************************************************/
public List selectall(news n) {
List list=nd.selectall(n);
return list;
}
/**********删除新闻内容***************************************************/
public int delete(int id) {
int a=0;
a=nd.delete(id);
return a;
}
/**********查找一个新闻内容***************************************************/
public news selectone(int id){
news nn=nd.selectone(id);
return nn;
}
/**********更新新闻内容***************************************************/
public int update(news s) {
int a=0;
a=nd.update(s);
return a;
}
}
Dao层:
public interface NewsDao {
public int addnews(news n);
public List selectall(news n);
public int delete(int id);
public news selectone(int id);
public int update(news s);
}
DaoImp程序:
public class NewsDaoImp implements NewsDao{//接口
Connection conn=null;
ResultSet rs=null;
PreparedStatement ps=null;
/**********添加新闻内容***************************************************/
public int addnews(news n) {
int a=0;
//连接数据库
try {
conn=shujuku.conn();
String sql="insert into news values(?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1, n.getTitle());
ps.setString(2, n.getContain());
ps.setString(3, n.getAutor());
ps.setInt(4, n.getTypeid());
a=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return a;
}
/**********查看新闻内容***************************************************/
public List selectall(news n) {
List list=new ArrayList();
try {
conn=shujuku.conn();
String sql="select n.id,n.title,n.contain,n.autor,ts.typename " +
"from news as n " +
"inner join types as ts " +
"on n.typeid=ts.id";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
//另一个构造函数
news ty=new news(rs.getInt("id"), rs.getString("title"),
rs.getString("contain"),rs.getString("autor"),rs.getString("typename"));
list.add(ty);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
/**********删除新闻内容***************************************************/
public int delete(int id) {
int a=0;
try {
conn=shujuku.conn();
String sql="delete from news where id="+id;
ps=conn.prepareStatement(sql);
a=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return a;
}
/**********查找一个新闻内容***************************************************/
public news selectone(int id) {
news nn=new news();//还要有一个空的构造方法3
try {
conn=shujuku.conn();
String sql="select*from news where id="+id;
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()){
nn.setId(rs.getInt("id"));
nn.setTitle(rs.getString("title"));
nn.setContain(rs.getString("contain"));
nn.setAutor(rs.getString("title"));
nn.setTypeid(rs.getInt("typeid"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return nn;
}
/**********更新新闻内容***************************************************/
public int update(news s) {
int a=0;
try {
conn=shujuku.conn();
String sql="update news set title=?,contain=?,autor=? where id=?";
ps=conn.prepareStatement(sql);
ps.setString(1, s.getTitle());
ps.setString(2, s.getContain());
ps.setString(3, s.getAutor());
ps.setInt(4, s.getId());
a=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return a;
}
}
数据库的表:
主外键关系:
之后还有对这篇文章的改进加入了C标签把页面的脚本都去掉:http://blog..net/qq_34178998/article/details/77579408
代码就这么多:最后来看下运行效果吧:
后期加功能再继续更新。。。。。。
也欢迎转载!!!也欢迎转载!!!也欢迎转载!!!
java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...相关推荐
- java的栈区 堆区存放什么_简单整理java中的栈内存, 堆内存是什么?
上一篇文章简单整理了栈(stack), 堆(heap), 队列(queue)的结构 这一篇继续整理java中的 占内存,堆内存. Java把内存划分成两种:一种是栈内存,一种是堆内存. 这里需要解释一 ...
- B站黑马测试第二篇P206视频数据库SQL语句‘关联查询_数据准备‘代码
drop table if exists category; create table category( id int unsigned primary key auto_increment, ty ...
- java jpa自身关联查询_使用JPA进行数据查询和关联查询
使用JPA进行数据查询和关联查询 在开发中经常会使用mybatis.jpa等框架来解决O/R映射技术实现数据访问.本文主要介绍使用JPA实现数据访问. 通常在关联查询的时候,表与表之前存在的关系有 O ...
- Java学习日志Day41_过滤器Filter 接口_项目更新:后台管理/前台统一处理全局乱码and用户列表---删除以及分页功能
一.过滤器Filter 接口 1.导包: <groupId>com.qf</groupId> <artifactId>FilterAndJquery</art ...
- 使用python对学生表的查询_多表组合查询——Python操作Mysql数据库
前面我们介绍了单张表的查询,包括模糊查询.分组.排序.各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的 ...
- postgres sql 多表联合查询_从零学会SQL-多表查询
之前学习的内容几乎针对单个表进行简单操作,实际工作中可没有这么简单,复杂的表结构和多表数据关联进行分析,这时候需要我们掌握多表查询方法,一如既往,我们先看一下这篇的主要内容: 表的加法 表的联结 联结 ...
- mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...
- mysql 关联查询_响应时间长?MySQL查询优化教程来了!
- 点击上方"爱数据学习社"关注我们吧! - 为什么查询会慢?--响应时间过长. 如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询, ...
- mycat 分表子查询_还不懂MyCat?一文带你深入剖析,实现MySQL读写分离
前言 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...
最新文章
- win10远程计算机管理,Win10系统下实现批量远程桌面管理的具体方法
- Linux疑难杂症解决方案100篇(十五)-万字长文带你深入Linux 内核学习:环境搭建和内核编译
- Netstars CTO陈斌:架构师的成长之路
- MyBatis基本例子-实现增删改查
- Hadoop平台优化综述(一)
- 记一次虚拟机共享文件夹的采坑之旅
- Gerry。沙漠苦旅。
- 计算机网络_实验5_集线器与交换机对比
- 常用DOS命令(三)--RD命令
- Linux DMA驱动构架分析
- VMware vSphere理论
- 《区块链技术与应用》读书笔记
- 从输入 URL 开始,聊一聊浏览器、网络等相关的知识
- excel自定义功能区图标_将您自己的图标添加到Excel自定义功能区选项卡
- 2种js动态绑定事件方法
- 算法的时间与空间复杂度介绍
- css实现仿element ui配色的小圆圈状态标记
- 小远qq1611532647淘宝主图设计
- 你的Ubuntu还可以这么美(转自知乎 @知一)
- 我与微笑哥以及 Java 极客技术的前世今生
热门文章
- pta函数统计素数并求和_关于求和的4种函数公式,此文讲透了,尤其是第4种,绝对的高效...
- 1273: 夫妻 -stack的运用
- radio button html5,Tkinter Radiobutton单选框的用法
- 虚幻四人行 Epic公司四创始人发展史(下)
- 游戏开发者需要注意的4个内存使用问题
- LNMP单机高并发的简单优化
- 弈剑行:几经曲折却遇开服宕机,克服困难单机上线,他们不妥协
- idea查看过期时间
- 在以阶段划分的编译过程中,判断程序语句的形式是否正确属于()阶段的工作。
- linux打开ftp功能的方法