-----------------------------------------------------java代码部分---------------------------------------------------------------
controller
扫描的类的注解类加注@controller
@Controller
public class CarCtr {
@Autowired
private CarService carservice;
public CarService getCarservice() {
return carservice;
}
public void setCarservice(CarService carservice) {
this.carservice = carservice;
}
// 查询
@RequestMapping("query")
public String query(HttpServletRequest request,PageUtils pageUtils) {
//pageUtils为工具类,将需要重复利用的一些类封装到一个类中,避免每次请求都执行一次新的操作,而代替的直接调用就可以了。
int dataNum =carservice.pages();
Carbean carbean = pageUtils.getQueryCarbean(request);
Page page=pageUtils.getPage(request,dataNum);
// 传参
List<Carbean> carlist = carservice.query(carbean, page);
// carlist组合查询时用于显示
request.setAttribute("listall", carlist);// 参数注入
return "query.jsp";
}
-----
// 用于修改的显示
@RequestMapping("querybyid")
public String querybyid(HttpServletRequest request) {
System.out.println("querybyid");
String carid = request.getParameter("id");
// 天数
List<Carbean> carlist = carservice.querybyid(carid);
Carbean carbean = carlist.get(0);
String starttime = carbean.getStarttime();
String endtime = carbean.getEndtime();
String str[] = carbean.getStarttime().trim().split("-");
String str1[] = carbean.getEndtime().trim().split("-");
request.setAttribute("syear", str[0]);
request.setAttribute("smonth", str[1]);
request.setAttribute("sday", str[2]);
request.setAttribute("eyear", str1[0]);
request.setAttribute("emonth", str1[1]);
request.setAttribute("eday", str1[2]);
request.setAttribute("carbean", carbean);
request.setAttribute("carid", carid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-mm-dd");
try {
long days = (ft.parse(endtime).getTime() - ft.parse(starttime)
.getTime()) / (1000 * 60 * 60 * 24);
request.setAttribute("days", days);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "save.jsp";
}
--------------------------------工具类举例开始-----------------------------------
// 页面,上一页下一页方法
public Page getPage(HttpServletRequest request, int dataNum) {
int perNum;
int currentPage = 1;// 默认第一页
request.setAttribute("currentPage", currentPage);// 查询显示第一页
String getPerNum = request.getParameter("perNum");
if (getPerNum == null || getPerNum.equals("")) {
perNum = 10;
} else {
perNum = Integer.parseInt(getPerNum);
}
request.setAttribute("perNum", perNum);// 默认每页十条数据
System.out.println("currentpage" + currentPage);
Page page = new Page();
// 页数
int pages = (dataNum % perNum) == 0 ? (dataNum / perNum)
: ((dataNum / perNum) + 1);
System.out.println("pages" + pages);
// 下一页
if (request.getParameter("next") != null) {
currentPage = Integer.parseInt(request.getParameter("next")) + 1;
}
// 上一页
if (request.getParameter("last") != null) {
currentPage = Integer.parseInt(request.getParameter("last")) - 1;
}
if (request.getParameter("current") != null) {
currentPage = Integer.parseInt(request.getParameter("current"));
}
if(request.getParameter("endPage")!=null)
{
currentPage =pages;
}
if (currentPage <= 1) {
currentPage = 1;
}
if (currentPage >= pages) {
currentPage = pages;
}
page.setPerNum(perNum);
page.setCurrentPage(currentPage);
request.setAttribute("dataNum", dataNum);// 总条数
request.setAttribute("pages", pages);// 总页数
request.setAttribute("currentPage", currentPage);
request.setAttribute("perNum", perNum);
return page;
}
-------------------------工具类举例结束-------------------------------
---------------DAO-------------------------
@Component //Component注解,将类注解到applicationContext上,相当于bean=“”class=“”,注解相对较简单。
public class Cardao {
@Autowired
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
--------add、update、delete------------
public int add(Carbean carbean) {
String sql = "INSERT INTO CARMANAGEMENT (CARDEPT,CARNUM,STARTTIME,ENDTIME,PATH) VALUES (?,?,?,?,?);";
System.out.println(sql);
return jdbcTemplate.update(
sql,
new Object[] { carbean.getCardept(), carbean.getCarnum(),
carbean.getStarttime(), carbean.getEndtime(),
carbean.getPath() });
}
public int update(Carbean carbean){
String sql = "UPDATE CARMANAGEMENT SET CARDEPT=?,CARNUM=?,STARTTIME=?,ENDTIME=?,PATH=? WHERE CARID=?; ";
System.out.println(sql);
return jdbcTemplate.update(
sql,
new Object[] { carbean.getCardept(), carbean.getCarnum(),
carbean.getStarttime(), carbean.getEndtime(),
carbean.getPath(), carbean.getCarid() });
}
public int delete(String carid) {
// TODO Auto-generated method stub
String sql = "DELETE FROM CARMANAGEMENT WHERE CARID=?;";
System.out.println(sql);
return jdbcTemplate.update(sql,
new Object[] { Integer.parseInt(carid) });
}
-----------查询一个和按id查询和按类别查询----------------------------
//总页数------------------查询一个数字,queryForInt
public int pages(){
String sql = "SELECT COUNT(*) FROM CARMANAGEMENT;";
int dataNum= jdbcTemplate.queryForInt(sql);
System.out.println(sql+dataNum);
return dataNum;
}
//分页操作,sql语句的拼接
public List<Carbean> pages(Page page,String sql)
{
int perNum=page.getPerNum();//每页显示条数
int current=page.getCurrentPage();//当前页
System.out.println("当前页"+current+"dao"+perNum+"pernum");
sql=sql+" LIMIT "+((current-1)*perNum)+" , "+perNum;
System.out.println("CarDao-query"+sql);
return (List<Carbean>) jdbcTemplate.query(sql, new CarRowMapper());
}
//按条件查询和查询所有,按条件查询,没有条件就查询所有,有条件就在后面加条件,通过sql语句的凭借,然后再结合分页操作的工具类实现条件查询的分页显示。
public List<Carbean> query(Carbean carbean,Page page) {
String sql = "SELECT * FROM CARMANAGEMENT WHERE 1=1 ";
String cardept = carbean.getCardept();
String carnum = carbean.getCarnum();
String starttime = carbean.getStarttime();
String endtime = carbean.getEndtime();
String path = carbean.getPath();
if ((cardept == null||"".equals(cardept)) && (carnum == null||"".equals(carnum)) && (starttime == null||"".equals(starttime))
&& (endtime == null || "".equals(endtime))&& (path == null||"".equals(path))) {
return (List<Carbean>)pages(page,sql);
} else {
if (StringUtils.isNotEmpty(cardept)) {
sql = sql + " AND CARDEPT LIKE " + "'%" + cardept + "%'";
System.out.println(sql);
}
if (StringUtils.isNotEmpty(carnum)) {
sql = sql + " AND CARNUM LIKE " + "'%" + carnum + "%'";
System.out.println(sql);
}
if (StringUtils.isNotEmpty(starttime)) {
sql = sql + " AND STARTTIME = " +"'"+ starttime+"'";
System.out.println(sql);
}
if (StringUtils.isNotEmpty(endtime)) {
sql = sql + " AND ENDTIME = " +"'"+endtime+"'";
System.out.println(sql);
}
if (StringUtils.isNotEmpty(path)) {
sql = sql + " AND PATH LIKE " + "'%" + path + "%'";
System.out.println(sql);
}
// TODO Auto-generated method stub
return (List<Carbean>)pages(page,sql);
}
}
//这部分逻辑有欠缺,在显示条件之后查询的是符合条件的数据,但是按下一页之后就会还是显示所有,需要在前面加个setAttribute(“条件名”,查询条件)
//request.setAttribute("carBeanSec", carbean);补充如下
// 查询
@RequestMapping("query")
public String query(HttpServletRequest request,PageUtils pageUtils) {
int dataNum =carservice.pages();
Carbean carbean = pageUtils.getQueryCarbean(request);
Page page=pageUtils.getPage(request,dataNum);
// 传参
List<Carbean> carlist = carservice.query(carbean, page);
// carlist组合查询时用于显示
request.setAttribute("carBeanSec", carbean);
request.setAttribute("listall", carlist);// 参数注入
return "query.jsp";
}
---页面-----
<table width="100%" height="100%" cellpadding="1" border=1
cellspacing="1">
<tr>
<th width="130px">车辆单位:</th>
<td><input type="text" id="cardept" name="cardept" value="${carBeanSec.cardept }"></input></td>
<th width="130px">车牌号:</th>
<td><input type="text" id="carnum" name="carnum" value="${carBeanSec.carnum }"></input></td>
</tr>
<tr>
<th>起始时间:</th>
<td><input type="text" id="starttime" name="starttime" value="${carBeanSec.starttime }"></input></td>
<th>结束时间:</th>
<td><input type="text" id="endtime" name="endtime" value="${carBeanSec.endtime }"></input></td>
</tr>
<tr>
<th>通行路线:</th>
<td><input type="text" id="path" name="path" value="${carBeanSec.path }"></input></td>
</tr>
</table>