最詳細的關于idea整合ssm框架講解
一個關于brand(品牌)的項目
[ssm框架搭建源代碼及mysql數據庫數據]鏈接:https://pan.baidu.com/s/1eBogklK0rFLj622KSaB9yw
提取碼:7erv
項目主要結構:
1.創建maven項目 選maven-archetype–webapp骨架
2.配置pom.xml
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><!--以下是配置的--><spring.version>4.3.6.RELEASE</spring.version><mybatis.version>3.2.8</mybatis.version><mybatis.spring.version>1.2.2</mybatis.spring.version><mybatis.paginator.version>1.2.15</mybatis.paginator.version><slf4j.version>1.6.4</slf4j.version><log4j.version>1.2.12</log4j.version><mysql.version>5.1.32</mysql.version><jackson.version>2.4.2</jackson.version><druid.version>1.0.9</druid.version><jstl.version>1.2</jstl.version><servlet-api.version>2.5</servlet-api.version><jsp-api.version>2.0</jsp-api.version><commons-lang3.version>3.3.2</commons-lang3.version><commons-io.version>1.3.2</commons-io.version><commons-net.version>3.3</commons-net.version><pagehelper.version>5.1.2</pagehelper.version><jsqlparser.version>0.9.7</jsqlparser.version><commons-fileupload.version>1.3.1</commons-fileupload.version></properties><dependencies><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--mybatis分頁--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>0.9.7</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--Apache工具組件--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>${commons-net.version}</version></dependency><!--gson--><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency><!--日志處理--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- 格式化對象,方便輸出日志 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><!--Mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis.spring.version}</version></dependency><dependency><groupId>com.github.miemiedev</groupId><artifactId>mybatis-paginator</artifactId><version>${mybatis.paginator.version}</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><!--Mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--連接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!-- spring核心包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- Jsp相關 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servlet-api.version}</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>${jsp-api.version}</version><scope>provided</scope></dependency><!--文件上傳組件--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${commons-fileupload.version}</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency></dependencies>
mysql數據庫文件
/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 5.5.61
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;create table `b_brand` (`id` bigint (20),`createDate` datetime ,`modifyDate` datetime ,`chineseName` varchar (300),`englishName` varchar (300),`desc` varchar (765),`logo` varchar (765),`type` int (11),`url` varchar (765),`story` varchar (765),`status` int (11)
);
insert into `b_brand` (`id`, `createDate`, `modifyDate`, `chineseName`, `englishName`, `desc`, `logo`, `type`, `url`, `story`, `status`) values('2','2019-02-15 22:16:20','2019-02-15 22:16:25','三星','sumsang','三星',NULL,'1',NULL,'aaa','1');
insert into `b_brand` (`id`, `createDate`, `modifyDate`, `chineseName`, `englishName`, `desc`, `logo`, `type`, `url`, `story`, `status`) values('3','2019-02-15 22:18:30','2019-02-15 22:18:40','三叉','sanX','三叉',NULL,'1',NULL,'bbb','0');
insert into `b_brand` (`id`, `createDate`, `modifyDate`, `chineseName`, `englishName`, `desc`, `logo`, `type`, `url`, `story`, `status`) values('4','2019-02-16 21:03:32','2019-02-16 21:03:35','aaa','aaa','aaa',NULL,'1',NULL,'aaa','1');
insert into `b_brand` (`id`, `createDate`, `modifyDate`, `chineseName`, `englishName`, `desc`, `logo`, `type`, `url`, `story`, `status`) values('5','2019-02-16 21:03:56','2019-02-16 21:03:59','bbb','bbb','bbb',NULL,'1',NULL,'dddd','1');
insert into `b_brand` (`id`, `createDate`, `modifyDate`, `chineseName`, `englishName`, `desc`, `logo`, `type`, `url`, `story`, `status`) values('6','2019-02-16 21:04:22','2019-02-16 21:04:25','aaabb','aaabb','aaabb',NULL,'1',NULL,'aaabb','1');
3.完善工程的包的結構
1.)創建一個 java文件夾----改文件夾的狀態(java選source,資源的選resource,測試的選test)
2.)在文件夾下建包,包下創建具體的包—–實體層pojo,業務層service,持久層repository(dao層),控制層controller。(如文章頂部項目主要結構的圖)
3.)下面圖為注意事項:
4.resource文件夾下寫幾個配置文件-------spring.xml,springmvc.xml,數據庫連接的jdbc.properties
注意:易錯點--------(有的時候出錯,實在查不出來時看看這個)jdbc.properties里開頭加前綴jdbc。不加前綴,在獲取用戶名的時候(數據庫連接用戶名)有可能獲得計算機的名。此處代碼如下圖,自己動手吧!
以下正式配置
1.)首先配置spring.xml(代碼在下方)
配置包掃描
注意:spring要掃描service(業務層)層,springmvc掃描controller 層,mybatis掃描dao層,需要被掃描的類要增加組件注解,例如 @Controller。
Spring.xml-------------首先增加命名空間及約束
再<!-配置包的掃描–>
命名空間對應的映射約束添加后就可以掃描了
注意:有映射文件mapper,.xml也掃描不了,因為java文件是藍色的(資源文件),其只能識別 .java文件。Mapper文件下的 .xml文件識別不了,在pom.xml里配置排除操作
添加排除配置
pom.xml添加排除配置代碼(在pom.xml的build標簽下添加)
<resources><resource><directory>${basedir}/src/main/java</directory><includes><include>**/*.xml</include></includes></resource>
</resources>
spring.xml代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--包掃描--><context:component-scan base-package="com.pb.ssm.service"/><!--引入數據庫連接文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--注入數據源--><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="password" value="${jdbc.password}"/><property name="username" value="${jdbc.username}"/><property name="url" value="${jdbc.url}"/><property name="driverClassName" value="${jdbc.driver}"/></bean><!--整合mybatis-spring--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!--定義別名--><property name="typeAliasesPackage" value="com.pb.ssm.pojo"/><!--掃描sql映射文件--><property name="mapperLocations" value="classpath:com/pb/ssm/mapper/*.xml"/><!--添加插件--><property name="plugins"><array><!--添加的mybatis分頁插件--><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><value>param1=mysql</value></property></bean></array></property></bean><!--注入(掃描)dao接口(即repository)--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.pb.ssm.repository"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>
</beans>
2.)完善pojo—創建Brand實體類屬性,set /get/ to string()
package com.pb.ssm.pojo;import java.util.Date;/*** @ClassName Brand* @Description TODO* @Author david* @Date 2019/02/15 14:37* @Version 1.0*/
public class Brand {private Long id;private Date createDate;private Date modifyDate;private String chineseName;private String englishName;private String desc;private String logo;private Integer type;private String url;private String story;private Integer status;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public Date getCreateDate() {return createDate;}public void setCreateDate(Date createDate) {this.createDate = createDate;}public Date getModifyDate() {return modifyDate;}public void setModifyDate(Date modifyDate) {this.modifyDate = modifyDate;}public String getChineseName() {return chineseName;}public void setChineseName(String chineseName) {this.chineseName = chineseName;}public String getEnglishName() {return englishName;}public void setEnglishName(String englishName) {this.englishName = englishName;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public String getLogo() {return logo;}public void setLogo(String logo) {this.logo = logo;}public Integer getType() {return type;}public void setType(Integer type) {this.type = type;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getStory() {return story;}public void setStory(String story) {this.story = story;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}@Overridepublic String toString() {return "brand{" +"id=" + id +", createDate=" + createDate +", modifyDate=" + modifyDate +", chineseName='" + chineseName + '\'' +", englishName='" + englishName + '\'' +", desc='" + desc + '\'' +", logo='" + logo + '\'' +", type=" + type +", url='" + url + '\'' +", story='" + story + '\'' +", status=" + status +'}';}
}
3.)完善持久層repository(dao層接口)
import org.apache.ibatis.annotations.Param;import java.util.List;/*** @ClassName BrandRepository* @Description TODO* @Author david* @Date 2019/02/15 16:00* @Version 1.0*/
public interface BrandRepository {//(jsp查找里,及list列表用)List<Brand> findBrandByName(@Param("chineseName") String name);//查看Brand findBrandById(@Param("id") Integer id);//刪除,返回影響個數int deleteById(@Param("id") Integer id);
}
4.)完善mapper文件下的映射文件
進入BrandRepository后Alt+回車生成方法體(問題點:自己的沒有生成,idea版本問題)
生成的樣式如下(自己的沒實現,可以直接建這個文件)
mapper文件下的BrandRepository.xml代碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pb.ssm.repository.BrandRepository"><sql id="allColoum">id,createDate,modifyDate,chineseName,englishName,`desc`,logo,`type`,url,story,status</sql><select id="findBrandByName" resultType="com.pb.ssm.pojo.Brand">select <include refid="allColoum"/>FROM b_brand<where><if test="chineseName!=null and chineseName!=''">chineseName LIKE CONCAT('%',#{chineseName},'%')</if></where>
/*查出的排序*/order by modifyDate desc</select><!--查找--><select id="findBrandById" resultType="com.pb.ssm.pojo.Brand">SELECT<include refid="allColoum"/>FROM b_brandWHERE id=#{id}</select><!--刪除--><delete id="deleteById">DELETE FROM b_brand where id=#{id}</delete>
</mapper>
5.)完善service(業務層)—建一個接口BrandService ----Alt+回車生成impl
BrandService代碼
package com.pb.ssm.service;import com.github.pagehelper.PageInfo;
import com.pb.ssm.pojo.Brand;import java.util.List;/*** @ClassName BrandService* @Description TODO* @Author david* @Date 2019/02/15 21:38* @Version 1.0*/
public interface BrandService {List<Brand> findBrandByName(String chineseName);PageInfo<Brand> findBrandPageByName(String chineseName,Integer pageNum,Integer pageSize);Brand findBrandById(Integer id);boolean deleteById(Integer id);
}
BrandServiceImpl代碼
package com.pb.ssm.service.impl;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pb.ssm.pojo.Brand;
import com.pb.ssm.repository.BrandRepository;
import com.pb.ssm.service.BrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @ClassName BrandServiceImpl* @Description TODO* @Author david* @Date 2019/02/15 22:08* @Version 1.0*/
@Service
public class BrandServiceImpl implements BrandService {@Autowiredprivate BrandRepository brandRepository;@Overridepublic List<Brand> findBrandByName(String chineseName) {return brandRepository.findBrandByName(chineseName);}@Overridepublic PageInfo<Brand> findBrandPageByName(String chineseName, Integer pageNum, Integer pageSize) {PageHelper.startPage(pageNum,pageSize);List<Brand> brands = brandRepository.findBrandByName(chineseName);PageInfo<Brand> brandPageInfo=new PageInfo<>();brandPageInfo.setList(brands);return brandPageInfo;}@Overridepublic Brand findBrandById(Integer id) {return brandRepository.findBrandById(id);}@Overridepublic boolean deleteById(Integer id) {if(brandRepository.deleteById(id)>0){return true;}return false;}
}
6.)在BrandSerciceImpl類,生成test測試類
package com.pb.ssm.service.impl;import com.github.pagehelper.PageInfo;
import com.pb.ssm.pojo.Brand;
import com.pb.ssm.service.BrandService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.List;import static org.junit.Assert.*;/*** @ClassName BrandServiceImplTest* @Description TODO* @Author david* @Date 2019/02/15 22:09* @Version 1.0*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring.xml")
public class BrandServiceImplTest {
// 注入業務層@Autowiredprivate BrandService brandService;@Testpublic void findBrandByName() throws Exception{List<Brand> brands=brandService.findBrandByName("三");System.out.println(brands);System.out.println(brands.size());}
7.)配置springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--包掃描--><context:component-scan base-package="com.pb.ssm.controller"/><!--注解驅動--><mvc:annotation-driven/><mvc:default-servlet-handler/><!--視圖解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp"/><property name="suffix" value=".jsp"/></bean>
</beans>
8.)再創建list.jsp (運行jsp需要tommcat)
把build下面的那個上移
list.jsp代碼
<%--Created by IntelliJ IDEA.User: davidDate: 2019/2/15Time: 23:17To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--//加上jstl--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>品牌列表</title><%--Bootstrap 3.0.3 js 文件--%><script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script><%--Bootstrap 3.0.3 css 文件--%><link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div class="container-fluid"><div class="row-fluid"><div class="span12"><form class="form-search" action="/admin/brand/list"><input class="input-medium search-query" name="chineseName" type="text" /><button type="submit" class="btn">查找</button></form></div></div><div class="row-fluid"><div class="span12"><p class="table-bordered"></p><table class="table table-bordered"><thead><tr><th>編號</th><th>創建日期</th><th>修改日期</th><th>中文名稱</th><th>英文名稱</th><th>描述</th><th>操作</th></tr></thead><tbody><c:forEach items="${brans}" var="item"><tr class="success"><td>${item.id}</td><td>${item.createDate}</td><td>${item.modifyDate}</td><td>${item.chineseName}</td><td>${item.englishName}</td><td>${item.desc}</td><td><a href="/admin/brand/update">編輯</a>|<a href="/admin/brand/view/${item.id}">查看</a>|<a href="/admin/brand/delete/${item.id}">刪除</a></td></tr></c:forEach></tbody></table><jsp:include page="/resources/html/page.html"</div></div>
</div>
</div>
</body>
</html>
9.)完善controller
在這package com.pb.ssm.controller;import com.pb.ssm.pojo.Brand;
import com.pb.ssm.service.BrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.util.List;/*** @ClassName BrandController* @Description TODO* @Author david* @Date 2019/02/15 22:45* @Version 1.0*///@RestController
@Controller //加前臺頁面用controller,不用RestController
@RequestMapping("/admin/brand")
public class BrandController {@Autowiredprivate BrandService brandService;@GetMapping("/list") //chineseName有可能為空,為避免,用@RequestParam("chineseName")public String list(@RequestParam(value = "chineseName",required = false)String chineseName , ModelMap model){//value = "chineseName"這個參數也可以不用傳,在查詢所有時不用傳參,HttpServletRequest還得各種判斷,麻煩List<Brand> brands=brandService.findBrandByName(chineseName);model.addAttribute("brans",brands);model.addAttribute("size",brands.size());//視圖解析器--springmvc.xml內 <property name="prefix" value="/WEB-INF/jsp"/>//接jsp后的/return "/admin/brand/list";}@GetMapping("/view/{id}")public String view(@PathVariable("id") String id, ModelMap model){//controller里根本不寫if else,只是調業務層的東西Integer finallId=0;if(id!=null){finallId=Integer.valueOf(id);}Brand brand=brandService.findBrandById(finallId);model.addAttribute("brand",brand);//重定向return "/admin/brand/view";}@GetMapping("/delete/{id}")public String delete(@PathVariable("id")String id){Integer finallId=0;if(id!=null){finallId=Integer.valueOf(id);}boolean result=brandService.deleteById(finallId);//簡單些寫的,正常是有判斷的,錯誤的跳轉到error頁面return "redirect:/admin/brand/list";}}
10.)完善web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>Archetype Created Web Application</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></context-param><!--配置spring監聽器 作用:可以監聽spring的上下文文件(context),注意順序--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--spring字符編碼過濾器start--><filter><!--①spring編碼過濾器--><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!--②編碼方式--><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><!--③強制進行編碼轉換--><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><!--過濾器的匹配URL--><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--配置springMVC,其底層是servlet,所以servlet-name--><servlet><servlet-name>springMVC</servlet-name><!--核心前端控制器--><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--初始化參數--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--參數啟動順序,1是第二個啟動--><load-on-startup>1</load-on-startup></servlet><!--映射,根目錄下所有的東西都走核心前端控制器,由它管理--><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
11.)啟動tommcat(注意網址)
,有時候會在localhost:8080/后面出現含_war_的地址,在后續的運行查看view,刪除操作時,接著網址后面直接寫網址(如8080/…war…/admin/brand/view).正常時候直接localhost:8080/admin/brand/view
注意:List.jsp里加下面2個在線引用(或在js文件夾下導入jar包),可以使用bootstrap的在線工具寫jsp
<%--Bootstrap 3.0.3 js 文件--%>
<script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
<%--Bootstrap 3.0.3 css 文件--%>
<link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
jsp里的搜索(查找) ------注意中文亂碼問題(在web.xml里加過濾器沒起作用,其他未調試,檢索英文沒問題,可以試一下數據庫內的數據,下面會添加文件)
類似如下
查看功能實現(文章上面代碼塊里有的已經復制了)
寫repository文件下的BrandRepository接口下的查看接口
Brand findBrandById(@Param(“id”) Integer id);(可快捷鍵生成方法體,自己idea版本不行),生成mapper文件下的BrandRepository.xml里的方法體
<!--查找-->
<select id="findBrandById" resultType="com.pb.ssm.pojo.Brand">SELECT<include refid="allColoum"/>FROM b_brandWHERE id=#{id}
</select>
業務層service下的BrandService接口
Brand findBrandById(Integer id);業務層service包下impl包下的BrandServiceImpl接口(里面的內容全都復制下了)
@Service
public class BrandServiceImpl implements BrandService {@Autowiredprivate BrandRepository brandRepository;@Overridepublic List<Brand> findBrandByName(String chineseName) {return brandRepository.findBrandByName(chineseName);}
//查詢用到的@Overridepublic Brand findBrandById(Integer id) {return brandRepository.findBrandById(id);}@Overridepublic boolean deleteById(Integer id) {if(brandRepository.deleteById(id)>0){return true;}return false;}
控制層Controller包下的BrandController類
@GetMapping("/view/{id}")public String view(@PathVariable("id") String id, ModelMap model){//controller里根本不寫if else,只是調業務層的東西Integer finallId=0;if(id!=null){finallId=Integer.valueOf(id);}Brand brand=brandService.findBrandById(finallId);model.addAttribute("brand",brand);//重定向return "/admin/brand/view";
}
創建view.jsp頁面
(注意list.jsp內的href地址)頁面傳id后,才能知道跳轉到什么地方。(rest風格傳遞)
<%--Created by IntelliJ IDEA.User: davidDate: 2019/2/15Time: 23:17To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--//加上jstl--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>品牌列表</title><%--Bootstrap 3.0.3 js 文件--%><script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script><%--Bootstrap 3.0.3 css 文件--%><link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container"><div class="container-fluid"><div class="row-fluid"><div class="span12"><table class="table"><tbody><tr><td>ID</td><td>${brand.id}</td></tr><tr class="success"><td>創建日期</td><td>${brand.createDate}</td></tr><tr class="error"><td>修改日期</td><td>${brand.modifyDate}</td></tr><tr class="warning"><td>中文名稱</td><td>${brand.chineseName}</td></tr><tr class="info"><td>英文名稱</td><td>${brand.englishName}</td></tr></tbody></table></div></div></div>
</div>
</body>
</html>
刪除操作代碼—同上
分頁:(分頁代碼,上文的代碼塊有些已經涵蓋,自己再看一下)
1.Spring.xml里spring整合mybatis時增加一個插件
<!--添加插件-->
<property name="plugins"><array><!--添加的mybatis分頁插件--><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><value>param1=mysql</value></property></bean></array>
</property>
2.Pom.xml里增加的:
<!--mybatis分頁-->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.2</version>
</dependency>
<dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>0.9.7</version>
</dependency>
3.service包下Brandservice加接口
PageInfo<Brand> findBrandPageByName(String chineseName,Integer pageNum,Integer pageSize);
實現BrandserviceImpl
@Override
public PageInfo<Brand> findBrandPageByName(String chineseName, Integer pageNum, Integer pageSize) {PageHelper.startPage(pageNum,pageSize);List<Brand> brands = brandRepository.findBrandByName(chineseName);PageInfo<Brand> brandPageInfo=new PageInfo<>();brandPageInfo.setList(brands);return brandPageInfo;
}
4.進行impl測試,生成test類
@Test
public void findBrandPageByName() {PageInfo<Brand> brandPageByName = brandService.findBrandPageByName(null, 1, 2);for (Brand b:brandPageByName.getList()) {System.out.println(b);}
}
5.)運行測試文件
運行日志里有紅框內的內容,分頁配置成功。注:分頁頁面未寫,自己看著添加一個更好
附:自己寫了個分頁的page.html,但是運行時有些錯誤未調節(注意:還要寫分頁實體類等,不只是靜態前端頁面)
html文件里寫page.html,list.jsp加jsp:include………引入資源
[ssm框架搭建源代碼及mysql數據庫數據]鏈接:https://pan.baidu.com/s/1eBogklK0rFLj622KSaB9yw
提取碼:7erv
總結
以上是生活随笔為你收集整理的最详细的Spring+SpringMVC+Mybatis框架整合及mybatis分页讲解,适合初级者的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。