struts2连接mysql多表查询
下载地址:http://download.csdn.net/detail/qq_33599520/9786567
项目结构:

代码:
package com.mstf.action; import java.util.List; import com.mstf.entity.Emp;
import com.mstf.service.QueryEmpService; public class QueryEmpAction {
private List<Emp> posts;
private int post_id;
private String emp_name; public int getPost_id() {
return post_id;
} public void setPost_id(int post_id) {
this.post_id = post_id;
} public String getEmp_name() {
return emp_name;
} public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
} public List<Emp> getPosts() {
return posts;
} public void setPosts(List<Emp> posts) {
this.posts = posts;
} /*
* 下拉列表控制
*/
public String selectEmp(){
QueryEmpService qes = new QueryEmpService();
posts = qes.selectEmp();
System.out.println(posts);
return "ok";
} /*
* 查询控制
*/
public String selectEmployee(){
QueryEmpService qes = new QueryEmpService();
posts = qes.selectEmployee(emp_name, post_id);
System.out.println(posts.size());
return "ok";
}
}
package com.mstf.dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.mstf.db.DbHelper;
import com.mstf.entity.Emp; public class EmpDao { /*
* 查询职位编号,职位名称
*/
public List<Emp> selectPost() {
PreparedStatement ps = null;
Connection conn = null;
ResultSet rs = null;
List<Emp> list = new ArrayList<Emp>();
try {
conn = DbHelper.getConnection();
ps = conn.prepareStatement("select post_id,post_name from post");
rs = ps.executeQuery();
while(rs.next()){
Emp emp = new Emp();
emp.setPost_id(rs.getInt("post_id"));
emp.setPost_name(rs.getString("post_name"));
list.add(emp);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
} /*
* 根据雇员姓名和职位编号链表查询
* 列出:雇员编号,职位名称,雇员姓名,雇员性别,雇员年龄,所属部门,雇员工龄
*/
public List<Emp> selectEmployee(String emp_name, int post_id) {
PreparedStatement ps = null;
Connection conn = null;
ResultSet rs = null;
List<Emp> list = new ArrayList<Emp>();
try {
conn = DbHelper.getConnection();
ps = conn.prepareStatement("select emp_id,post_name,emp_name,emp_sex,emp_age,emp_depart,emp_year from employee e,post p where e.post_id=p.post_id and emp_name like ? and p.post_id like ?");
ps.setString(1, emp_name);
if(post_id==0){
ps.setString(2, "%");
}else{
ps.setInt(2, post_id);
}
rs = ps.executeQuery();
while(rs.next()){
Emp emp = new Emp();
emp.setPost_name(rs.getString("post_name"));
emp.setEmp_id(rs.getInt("emp_id"));
emp.setEmp_name(rs.getString("emp_name"));
emp.setEmp_sex(rs.getString("emp_sex"));
emp.setEmp_age(rs.getInt("emp_age"));
emp.setEmp_depart(rs.getString("emp_depart"));
emp.setEmp_year(rs.getInt("emp_year"));
list.add(emp);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
package com.mstf.db; import java.sql.Connection;
import java.sql.DriverManager; public class DbHelper {
private static String url = "jdbc:mysql://127.0.0.1:3306/db_emp"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "root"; // 数据库密码
private static Connection conn; private DbHelper(){ } public static Connection getConnection(){
if(null == conn){
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
} public static void main(String[] args) { // 测试数据库是否连通
System.err.println(getConnection());
}
}
package com.mstf.entity;
public class Emp { // 实体类
private int post_id;
private String post_name;
private String post_desc;
private int emp_id;
private String emp_name;
private String emp_sex;
private int emp_age;
private String emp_depart;
private int emp_year;
public int getPost_id() {
return post_id;
}
public void setPost_id(int post_id) {
this.post_id = post_id;
}
public String getPost_name() {
return post_name;
}
public void setPost_name(String post_name) {
this.post_name = post_name;
}
public String getPost_desc() {
return post_desc;
}
public void setPost_desc(String post_desc) {
this.post_desc = post_desc;
}
public int getEmp_id() {
return emp_id;
}
public void setEmp_id(int emp_id) {
this.emp_id = emp_id;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public String getEmp_sex() {
return emp_sex;
}
public void setEmp_sex(String emp_sex) {
this.emp_sex = emp_sex;
}
public int getEmp_age() {
return emp_age;
}
public void setEmp_age(int emp_age) {
this.emp_age = emp_age;
}
public String getEmp_depart() {
return emp_depart;
}
public void setEmp_depart(String emp_depart) {
this.emp_depart = emp_depart;
}
public int getEmp_year() {
return emp_year;
}
public void setEmp_year(int emp_year) {
this.emp_year = emp_year;
}
}
package com.mstf.service; import java.util.List; import com.mstf.dao.EmpDao;
import com.mstf.entity.Emp; public class QueryEmpService { /*
* 下拉列表业务层
*/
public List<Emp> selectEmp(){
EmpDao empdao = new EmpDao();
List<Emp> list = empdao.selectPost();
return list;
} /*
* 链接查询业务层
*/
public List<Emp> selectEmployee(String emp_name,int post_id){
if(emp_name.equals("")){
emp_name = "%";
}
EmpDao empdao = new EmpDao();
List<Emp> list = empdao.selectEmployee(emp_name, post_id);
return list;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 热部署 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 指定语言 -->
<constant name="struts.locale" value="zh_CN"></constant>
<!-- 指定编码 -->
<constant name="struts.i18n.encoding" value="utf-8"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<package name="mstf" extends="struts-default" namespace="/">
<action name="show" class="com.mstf.action.QueryEmpAction" method="selectEmp">
<result name="ok">index.jsp</result>
</action>
<action name="showEmp" class="com.mstf.action.QueryEmpAction" method="selectEmployee">
<result name="ok">show.jsp</result>
</action>
</package> </struts>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 过滤器 用于初始化struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <!-- 用于struts2 的过滤器映射 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>雇员查询</title>
</head>
<body>
<h1 align="center">雇员查询</h1>
<form action="showEmp" method="post">
<table align="center" border="1">
<tr>
<td>
雇员姓名:
<input type="text" name="emp_name">
</td>
</tr>
<tr>
<td>
公司职位:
<select name="post_id">
<option value="0">请选择:</option>
<c:forEach items="${posts}" var="emp">
<option value="${emp.post_id}">${emp.post_name}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>
查询雇员明细:
<input type="submit" name="submit" value="查询雇员明细">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询信息显示</title>
</head>
<body>
<table align="center" border="1">
<tr>
<td>雇员编号</td>
<td>雇员职位</td>
<td>雇员姓名</td>
<td>雇员年龄</td>
<td>所属部门</td>
<td>雇员工龄</td>
</tr>
<c:forEach items="${posts}" var="emp">
<tr>
<td>${emp.emp_id}</td>
<td>${emp.post_name}</td>
<td>${emp.emp_name}</td>
<td>${emp.emp_age}</td>
<td>${emp.emp_depart}</td>
<td>${emp.emp_year}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
struts2连接mysql多表查询的更多相关文章
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- MySQL多表查询合并结果union all,内连接查询
MySQL多表查询合并结果和内连接查询 1.使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tab ...
- (转)Mysql 多表查询详解
MySQL 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...
- MySQL多表查询回顾
----------------------siwuxie095 MySQL 多表查询回顾 以客户和联系人为例(一对多) 1.内连接 /*内连接写法一*/ select * from t_custom ...
- python 3 mysql 单表查询
python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...
- python3 mysql 多表查询
python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id ...
- Mysql 单表查询-排序-分页-group by初识
Mysql 单表查询-排序-分页-group by初识 对于select 来说, 分组聚合(((group by; aggregation), 排序 (order by** ), 分页查询 (limi ...
- MySQL多表查询、事务、DCL:内含mysql如果忘记密码解决方案
MySQL多表查询.事务.DCL 多表查询 * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE dept( id ...
- python连接mysql数据表查询表获取数据导入到txt中
import pymysql'''连接mysql数据表查询表获取数据导入到txt中'''#查询结果写入数据到txtdef get_loan_number(file_txt): connect = py ...
随机推荐
- 山东理工oj--1912--IP地址(水题)
IP地址 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 2011年2月3日,国际互联网名称与数字地址分配机构(ICANN) ...
- CentOS Linux 加硬盘,分区和设置自动挂载
sda 表示第1块SCSI硬盘hda 表示第1块IDE硬盘(即连接在第1个IDE接口的Master口上)scd0 表示第1个USB光驱当添加了新硬盘后,在/dev目录下会有相应的设备文件产生.ccis ...
- CentOS7安装第三方yum源EPEL
转自:https://blog.csdn.net/u012208775/article/details/78784616 一.简介 EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fe ...
- [JZOJ 5888] [NOIP2018模拟9.29] GCD生成树 解题报告 (最大生成树+公约数)
题目链接: http://172.16.0.132/senior/#main/show/5888 题目: 题解: 思路是这样的:两个数的最大公约数一定不会比这两个数的任意一个数大.因此我们把权值相等的 ...
- vue项目中设置全局引入scss,使每个组件都可以使用变量
在Vue项目中使用scss,如果写了一套完整的有变量的scss文件.那么就需要全局引入,这样在每个组件中使用. 可以在mian.js全局引入,下面是使用方法. 1: 安装node-sass.sass- ...
- SQL SERVER 将一个数据库中的表和数据复制到另一个数据库中
第一种情况:将A数据库.dbo.A表的数据追加到B数据库.dbo.B表中 (条件:此时B数据库中已创建好了B表) insert into B数据库.dbo.B表 select * from A数据库. ...
- 你不知道的JavaScript(四)数值
JS中只有一种数值类型,即number.不管是整数还是小数都属于number类型,事实上JS并不区分小数和整数. <div> <script type="text/java ...
- OpenGL编程(七)3D模型的深度(z轴)检测
下图是我们要修改后的效果图: 一.深度检测 1.模型Z轴显示有问题: 上一次试验中,如果认真留意,会发现一个问题.当控制锥体在左右或上下旋转时,你会发现锥体看起来是在+-180度之间来回摆动,而不是3 ...
- Node_进阶_5
Node进阶第五天 为什么mysql不用开mongod –dbpath xx… 答:因为mysql会在”服务”中运行,也就是开机时自动启动并且长久驻扎在内存中了. mongodb其实也能通过设置来设成 ...
- 题解 P3128 【[USACO15DEC]最大流Max Flow】
此类型题目有两种比较常见的做法:树链剖分和树上差分. 本题有多组修改一组询问,因此树上差分会比树链剖分优秀很多. 这里两种方法都进行介绍. 树链剖分和树上差分的本质都是将一颗树转换为一个区间,然后进行 ...