這是一個(gè)簡(jiǎn)單的ssm整合項(xiàng)目? 實(shí)現(xiàn)了汽車的品牌,價(jià)格,車型的添加 ,修改,刪除,所有數(shù)據(jù)從數(shù)據(jù)庫(kù)中拿取
使用到了jsp+mysql+Mybatis+spring+springmvc 等后端技術(shù),使用springboot快速搭建項(xiàng)目,前端使用到了layui
1.準(zhǔn)備數(shù)據(jù)庫(kù)相關(guān)
1.1 新建car表?
CREATETABLE`car` (
`id`int(11)NOTNULLAUTO_INCREMENT,
`brand`varchar(20)NOTNULL,
`type`varchar(20)NOTNULL,
`price`double(20,0)NOTNULL,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25DEFAULT CHARSET=utf8;
?
1.2 添加數(shù)據(jù)?
INSERTINTO`car`VALUES('1','豐田','卡羅拉','128888');
INSERTINTO`car`VALUES('2','本田','思域','138888');
INSERTINTO`car`VALUES('3','寶馬','3系','328888');
INSERTINTO`car`VALUES('4','榮威','RX8','168888');
INSERTINTO`car`VALUES('5','豐田','漢蘭達(dá)','328888');
INSERTINTO`car`VALUES('6','大眾','帕沙特','218888');
INSERTINTO`car`VALUES('7','奧迪','A6','456666');
INSERTINTO`car`VALUES('8','寶馬','7系','1200000');
2開(kāi)始項(xiàng)目?
新建一個(gè)springboot項(xiàng)目
添加相關(guān)依賴
</dependency>
<!--阿里巴巴連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!--mybatis-plus依賴-->
<!--https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.1</version>
</dependency>
?
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
?
?
<!--jstl依賴-->
<!--https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
?
<!--使jsp頁(yè)面生效-->
<!--https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.33</version>
</dependency>
<!--https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.0</version>
</dependency>
?
?
?
?
</dependencies>
創(chuàng)建com.car.pojo.Car數(shù)據(jù)庫(kù)表對(duì)應(yīng)類,打上@TableName注解關(guān)聯(lián)上數(shù)據(jù)庫(kù)表,提供get/set方法,如果不想手寫get/set方法可以在創(chuàng)建springboot項(xiàng)目時(shí)勾選上Lombok依賴,可以自動(dòng)創(chuàng)建get/set方法
@TableName("car")//和數(shù)據(jù)庫(kù)的表相對(duì)應(yīng)
//@Data//自動(dòng)添加get/set方法
publicclassCar{
@TableId(type=IdType.AUTO)
privateIntegerid;
privateStringtype;
privateStringbrand;
privateDoubleprice;
?
publicIntegergetId() {
returnid;
?? }
?
publicvoidsetId(Integerid) {
this.id=id;
?? }
?
publicStringgetType() {
returntype;
?? }
?
publicvoidsetType(Stringtype) {
this.type=type;
?? }
?
publicStringgetBrand() {
returnbrand;
?? }
?
publicvoidsetBrand(Stringbrand) {
this.brand=brand;
?? }
?
publicDoublegetPrice() {
returnprice;
?? }
?
publicvoidsetPrice(Doubleprice) {
this.price=price;
?? }
?
@Override
publicStringtoString() {
return"Car{"+
"id="+id+
", type='"+type+'\''+
", brand='"+brand+'\''+
", price="+price+
'}';
?? }
}
在car包下新建conteoller.AutoConteoller類并打上@Controller注解
@Controller
public class AutoController {
?? @Autowired
?? private AutoServiceImpl autoService;
?
?? @RequestMapping("/findAll")
?? public String findAll(Integer page,Model model){
? ? ?? //開(kāi)始分頁(yè)
? ? ?? PageHelper.startPage(page,3);
? ? ?? List<Car> carList = autoService.findAll(page);
? ? ?? PageInfo<Car> pageInfo = new PageInfo<>(carList);
? ? ?? model.addAttribute("list",carList);
? ? ?? model.addAttribute("page",page);
? ? ?? return "list";
?? }
?? //添加數(shù)據(jù)
?? @RequestMapping("/add")
?? public String addCar(Car car){
? ? ?? autoService.addCar(car);
? ? ?? return "redirect:findAll";
?? }
?? //搜索
?? @RequestMapping("/findCarByType")
?? public String findCarByType(String brand,Model model){
? ? ?? List<Car> carList = autoService.findCarByType(brand);
? ? ?? model.addAttribute("list",carList);
? ? ?? return "list";
?? }
?? //根據(jù)id刪除
?? @RequestMapping("/delete")
?? public String deleteById(Integer id){
? ? ?? autoService.deleteById(id);
? ? ?? return "redirect:findAll";
?? }
?? //跳轉(zhuǎn)修改頁(yè)
?? @RequestMapping("/alter")
?? public String skip(Integer id,Model model){
? ? ?? List<Car> carBrand = autoService.findCarById(id);
? ? ?? model.addAttribute("list",carBrand);
? ? ?? return "update";
?? }
?? //修改
?? @RequestMapping("/update")
?? public String updateCarByBrand(Car car){
? ? ?? autoService.updateCarByBrand(car);
? ? ?? return "redirect:findAll";
?? }
?? //根據(jù)id查詢
?? public String findCarById(Integer id,Model model){
? ? ?? List<Car> cars = autoService.findCarById(id);
? ? ?? model.addAttribute("list",cars);
? ? ?? return "list";
?? }
?
}
在car包下新建srvice.AutoService接口
publicinterfaceAutoService{
//查詢所有
List<Car>findAll(Integerpage);
//新增
voidaddCar(Carcar);
//根據(jù)品牌搜索
List<Car>findCarByType(Stringbrand);
//根據(jù)id刪除
voiddeleteById(Integerid);
//修改
voidupdateCarByBrand(Carcar);
//根據(jù)id查詢
List<Car>findCarById(Integerid);
}
在Service包下新建AutoService接口的實(shí)現(xiàn)類impl.AutoServiceImpl實(shí)現(xiàn)AutoService接口中的方法,并打上@Service注解‘
@Service
publicclassAutoServiceImplimplementsAutoService{
@Autowired(required=false)
privateAutoMapperautoMapper;
?
//查詢所有
@Override
publicList<Car>findAll(Integerpage) {
List<Car>carList=autoMapper.findAll(page);
returncarList;
?? }
?
@Override
publicvoidaddCar(Carcar) {
autoMapper.addCar(car);
?? }
?
@Override
publicList<Car>findCarByType(Stringbrand) {
List<Car>carList=autoMapper.findCarByType(brand);
returncarList;
?? }
?
@Override
publicvoiddeleteById(Integerid) {
autoMapper.deleteById(id);
?? }
?
@Override
publicvoidupdateCarByBrand(Carcar) {
autoMapper.updateCarByBrand(car);
?? }
?
@Override
publicList<Car>findCarById(Integerid) {
List<Car>cars=autoMapper.findCarById(id);
returncars;
?? }
}
在car包下新建mapper.AutoMapper接口,并打上@Mapper注解
@Mapper
publicinterfaceAutoMapper{
@Select("select * from car")
List<Car>findAll(Integerpage);
//添加
@Insert("insert into car(brand,type,price)values(#{brand},#{type},#{price})")
voidaddCar(Carcar);
//根據(jù)品牌查詢
@Select("select * from car where brand like '%${brand}%'")
List<Car>findCarByType(Stringbrand);
//根據(jù)id刪除
@Delete("delete from car where id=#{id}")
voiddeleteById(Integerid);
//修改
@Update("update car set brand=#{brand},type=#{type},price=#{price} where brand=#{brand}")
voidupdateCarByBrand(Carcar);
//根據(jù)id查詢
@Select("select * from car where id = #{id}")
List<Car>findCarById(Integerid);
}
新建list.jsp頁(yè)面(主頁(yè)面展示)
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<link type="text/css" href=".././css/layui.css" rel="stylesheet">
<html>
<head>
? ? <title>品牌列表</title>
? ? <style type="text/css">
? ? ? ? .layui-form{
? ? ? ? ? ? display: flex;
? ? ? ? }
? ? ? ? .layui-btn{
? ? ? ? ? ? margin-left: 10px;
? ? ? ? }
? ? ? ? .hint{
? ? ? ? ? ? color: red;
? ? ? ? ? ? line-height: 40px
? ? ? ? }
? ? ? ? .break-point{
? ? ? ? ? ? height: 2px;
? ? ? ? }
? ? ? ? .layui-table th{
? ? ? ? ? ? text-align: center;
? ? ? ? }
? ? ? ? .layui-table td{
? ? ? ? ? ? text-align: center;
? ? ? ? }
? ? ? ? .layui-card{
? ? ? ? ? ? background-color:#393D49;
? ? ? ? }
? ? ? ? .layui-card-header{
? ? ? ? ? ? color: #01AAED;
? ? ? ? ? ? text-align: center;
? ? ? ? }
? ? ? ? .page-button{
? ? ? ? ? ? width: 30%;
? ? ? ? ? ? display: flex;
? ? ? ? ? ? align-items:center;
? ? ? ? ? ? justify-content: center;
? ? ? ? }
? ? ? ? .main{
? ? ? ? ? ? display: flex;
? ? ? ? ? ? align-items:center;
? ? ? ? ? ? justify-content: center;
? ? ? ? }
? ? </style>
</head>
<tbody>
<div class="layui-card">
? ? <div class="layui-card-header">汽車列表</div>
</div>
<form class="layui-form" action="add" method="get">
? ? <div class="layui-form-item">
? ? ? ? <label class="layui-form-label">品牌</label>
? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? <input type="text" name="brand" required? lay-verify="required" placeholder="請(qǐng)輸入品牌" autocomplete="off" class="layui-input">
? ? ? ? </div>
? ? </div>
? ? <div class="layui-form-item">
? ? ? ? <label class="layui-form-label">型號(hào)</label>
? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? <input type="text" name="type" required? lay-verify="required" placeholder="請(qǐng)輸入型號(hào)" autocomplete="off" class="layui-input">
? ? ? ? </div>
? ? </div>
? ? <div class="layui-form-item">
? ? ? ? <label class="layui-form-label">價(jià)格</label>
? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? <input type="number" name="price" required? lay-verify="required" placeholder="請(qǐng)輸入價(jià)格" autocomplete="off" class="layui-input">
? ? ? ? </div>
? ? </div>
? ? <input type="submit" value="添加" class="layui-btn"/>
? ? <input type="reset" value="重置" class="layui-btn layui-btn-primary"/>
</form>
<!-- 搜索 -->
<form class="layui-form" action="findCarByType" method="get">
? ? <div class="layui-form-item">
? ? ? ? <label class="layui-form-label">品牌</label>
? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? <input type="text" name="brand" required? lay-verify="required" placeholder="請(qǐng)輸入品牌" autocomplete="off" class="layui-input">
? ? ? ? </div>
? ? </div>
? ? <input type="submit" value="搜索" class="layui-btn"/>
? ? <input type="reset" value="重置" class="layui-btn layui-btn-primary"/>
? ? <div>
? ? ? ? <div class="hint">提示:搜索功能支持模糊查找</div>
? ? </div>
</form>
<hr class="layui-bg-green">
<table class="layui-table">
? ? <thead>
? ? <tr>
? ? ? ? <th>編號(hào)</th>
? ? ? ? <th>品牌</th>
? ? ? ? <th>型號(hào)</th>
? ? ? ? <th>價(jià)格</th>
? ? ? ? <th>刪除|修改</th>
? ? </tr>
? ? <tbody>
<c:forEach items="${list}" var="carlist">
? ? <tr>
? ? ? ? <td>${carlist.id}</td>
? ? ? ? <td>${carlist.brand}</td>
? ? ? ? <td>${carlist.type}</td>
? ? ? ? <td>¥${carlist.price}</td>
? ? ? ? <td>
? ? ? ? ? ? <a href="delete?id=${carlist.id}" class="layui-btn layui-btn-normal">刪除</a>
? ? ? ? ? ? <a href="alter?id=${carlist.id}" class="layui-btn layui-btn-normal">修改</a>
? ? ? ? </td>
? ? </tr>
</c:forEach>
? ? </tbody>
? ? </tbody>
</table>
</body>
</html>
新建update.jsp頁(yè)面(車輛信息修改)
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<link type="text/css" rel="stylesheet" href=".././css/layui.css">
<html>
<head>
? ? <title>修改</title>
? ? <style type="text/css">
? ? ? ? .layui-form{
? ? ? ? ? ? display: flex;
? ? ? ? }
? ? ? ? .layui-btn{
? ? ? ? ? ? margin-left: 10px;
? ? ? ? }
? ? ? ? .layui-card{
? ? ? ? ? ? background-color:#393D49;
? ? ? ? }
? ? ? ? .layui-card-header{
? ? ? ? ? ? color: #01AAED;
? ? ? ? ? ? text-align: center;
? ? ? ? }
? ? </style>
</head>
<body>
<div class="layui-card">
? ? <div class="layui-card-header">修改</div>
</div>
<c:forEach items="${list}" var="car">
? ? <form class="layui-form" action="update" method="get">
? ? ? ? <div class="layui-form-item">
? ? ? ? ? ? <label class="layui-form-label">品牌</label>
? ? ? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? ? ? <input type="text" name="brand" required? lay-verify="required" placeholder="${car.brand}" autocomplete="off" class="layui-input">
? ? ? ? ? ? </div>
? ? ? ? </div>
? ? ? ? <div class="layui-form-item">
? ? ? ? ? ? <label class="layui-form-label">車型</label>
? ? ? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? ? ? <input type="text" name="type" required? lay-verify="required" placeholder="${car.type}" autocomplete="off" class="layui-input">
? ? ? ? ? ? </div>
? ? ? ? </div>
? ? ? ? <div class="layui-form-item">
? ? ? ? ? ? <label class="layui-form-label">價(jià)格</label>
? ? ? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? ? ? <input type="text" name="price" required? lay-verify="required" placeholder="${car.price}" autocomplete="off" class="layui-input">
? ? ? ? ? ? </div>
? ? ? ? </div>
? ? ? ? <input type="submit" value="修改" class="layui-btn"/>
? ? ? ? <input type="reset" value="重置" class="layui-btn layui-btn-primary"/>
? ? </form>
</c:forEach>
</body>
</html>
注意:前端使用到了Layui需要的可以去Layui官網(wǎng)下載根據(jù)文檔使用