SpringBoot與MyBatis搭建環境,底層數據庫爲mysql,頁面使用JSP(官網上不推薦使用jsp),完成從數據庫中查詢出數據,在jsp頁面中顯示,而且實現頁面的跳轉功能。html
項目下載連接: https://github.com/DFX339/springbootJsp.git前端
(1)新建數據庫 springboot_mybatisjava
新建表 user,表的結構以下:mysql
(2)新建maven項目---web項目 springbootJsp,項目目錄結構以下git
ApplicationMain.java : SpringBoot項目的啓動類github
UserController.java : 前端控制類web
UserMapper.java :持久層的接口設計spring
User.java:實體類sql
UserIService.java:業務層接口數據庫
UserService.java: 業務層接口實現類
mapper/UserMapper.xml:UserMapper接口對應的xml文件,裏面是sql語句
application.properties :這是SpringBoot的默認配置文件名,存放在resources目錄下。 必須命名爲application.properties,不然讀取不了 須要另外配置
showUser.jsp : 訪問findById方法返回的頁面
skipped.jsp: 從showUser.jsp頁面請求/skip方法跳轉到此頁面
pom.xml:maven項目的配置文件
(3)springboot的配置文件: application.properties (放在src/main/resources目錄下,會自動讀取)
#指定跳轉的前綴,這裏表示全部的頁面都存放在/WEB-INF/jsp文件下 spring.mvc.view.prefix=/WEB-INF/jsp/ # 指定跳轉頁面的後綴,這裏表示全部的頁面都是jsp頁面 spring.mvc.view.suffix=.jsp
#指定跳轉的前綴 spring.mvc.view.prefix=/WEB-INF/jsp/ # 指定跳轉頁面的後綴 spring.mvc.view.suffix=.jsp #訪問的項目名 server.context-path=/SpringbootJsp #數據庫的配置 spring.datasource.driver-class-name =com.mysql.jdbc.Driver spring.datasource.url =jdbc:mysql://localhost:3306/springboot_mybatis spring.datasource.username =root spring.datasource.password =root #mybatis配置文件的配置 mybatis.typeAliasesPackage=SpringBoot_jsp.springbootJsp.pojo mybatis.mapperLocations=classpath:/mapper/UserMapper.xml
(4)ApplicationMain.java : SpringBoot項目的啓動類
package SpringBoot_jsp.springbootJsp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * SpringBoot的啓動類 * 自動啓動內置的tomcat * @author Administrator * */ @SpringBootApplication @EnableAutoConfiguration public class ApplicationMain { public static void main(String[] args) { SpringApplication.run(ApplicationMain.class,args); } }
(5)UserController.java : 前端控制類
使用@Controller註解,能夠跳轉到jsp、html頁面,也能夠返回json數據
須要返回json數據的時候,在方法上添加@ResponseBody註解
package SpringBoot_jsp.springbootJsp.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import SpringBoot_jsp.springbootJsp.pojo.User; import SpringBoot_jsp.springbootJsp.service.UserService; /** * 前端控制器類,調用業務層方法處理請求 * @author Administrator * */ @Controller @ComponentScan({"SpringBoot_jsp.springbootJsp.service"}) @MapperScan("SpringBoot_jsp.springbootJsp.mapper") public class UserController { @Resource private UserService userService; /** * 根據id查詢出對應的用戶 * @param id * @param request * @return */ @RequestMapping("/findById") public String findById(HttpServletRequest request){ User user = userService.find(18); request.setAttribute("user", user); return "first/showUser"; }
/** * 跳轉到skipped.jsp
* @param request
* @return
*/ @RequestMapping("/skip") public String skip(HttpServletRequest request){ User user = userService.find(18); request.setAttribute("user", user); return "skip/skipped"; } }
(6) UserMapper.java :持久層的接口設計,使用@Mapper註解標明這是個mapper接口
package SpringBoot_jsp.springbootJsp.mapper; import org.apache.ibatis.annotations.Mapper; import SpringBoot_jsp.springbootJsp.pojo.User; /** * 持久層接口,定義增刪改查方法 * @author Administrator * */ @Mapper public interface UserMapper { void insert(User user); void delete(int id); void edit(User user); User find(int id); }
(7)User.java:實體類 ,與數據庫中的字段一 一對應。
package SpringBoot_jsp.springbootJsp.pojo; /** * 實體類 * @author Administrator * */ public class User { private int id; private String username; private String password; private int age; public User(){} /** setter and getter 方法 */ }
(8) UserIService.java:業務層接口
package SpringBoot_jsp.springbootJsp.service; import SpringBoot_jsp.springbootJsp.pojo.User; /** * 業務層接口 * @author Administrator * */ public interface UserIService { void insert(User user); void delete(int id); void edit(User user); User find(int id); }
(9) UserService.java: 業務層接口實現類 ,調用mapper接口中的方法完成對數據庫的操做
package SpringBoot_jsp.springbootJsp.service; import javax.annotation.Resource; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Service; import SpringBoot_jsp.springbootJsp.mapper.UserMapper; import SpringBoot_jsp.springbootJsp.pojo.User; /** * 業務層實現類 * @author Administrator * */ @Service("userService") @ComponentScan({"SpringBoot_jsp.springbootJsp.mapper"}) public class UserService implements UserIService { @Resource private UserMapper userMapper; @Override public void insert(User user) { userMapper.insert(user); } @Override public void delete(int id) { userMapper.delete(id); } @Override public void edit(User user) { userMapper.edit(user); } @Override public User find(int id) { return userMapper.find(id); } }
(10)mapper/UserMapper.xml:UserMapper接口對應的mapper.xml文件,裏面是sql語句
<?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"> <!-- 指定工做空間,要與接口名相同,源代碼沒有去看,猜想應該是經過"這裏的namespace.下邊方法的id"來定位方法的 --> <mapper namespace="SpringBoot_jsp.springbootJsp.mapper.UserMapper"> <!-- insert user --> <insert id = "insert" parameterType="SpringBoot_jsp.springbootJsp.pojo.User"> INSERT INTO USER(ID,USERNAME,PASSWORD,AGE) VALUES(#{id},#{username},#{password},#{age}); </insert> <!-- update user --> <update id="edit" parameterType="SpringBoot_jsp.springbootJsp.pojo.User"> UPDATE USER SET USERNAME=#{username} , PASSWORD=#{password} , AGE = #{age} WHERE ID=#{id} </update> <!-- find user --> <select id="find" parameterType="int" resultType="SpringBoot_jsp.springbootJsp.pojo.User"> SELECT ID,USERNAME,PASSWORD,AGE FROM USER WHERE ID=#{0} </select> <!-- delete user --> <delete id="delete" parameterType="int"> DELETE FROM USER WHERE ID=#{0} </delete> </mapper>
(11) showUser.jsp : 訪問findById方法返回的頁面
在頁面發送請求使用 url="/項目名/請求名.do"
例如:<a href="/SpringbootJsp/skip.do">轉到skip.jsp</a>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=ISO-8859-1">
<title>顯示用戶信息</title>
</head>
<body>
<h1>HELLO THIS IS SHOWUSER JSP.</h1>
<h2>${user.id }</h2>
<h2>${user.username }</h2>
<h2>${user.password }</h2>
<a href="/SpringbootJsp/skip.do">轉到skip.jsp</a>
</body>
</html>
(12)skipped.jsp: 從showUser.jsp頁面請求/skip方法跳轉到此頁面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=ISO-8859-1">
<title>jsp跳轉</title>
</head>
<body>
<h1>Skip jsp</h1>
<a href="/SpringbootJsp/findById.do">轉到showUser.jsp</a>
</body>
</html>
(13)pom.xml:maven項目的配置文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringBoot_jsp</groupId> <artifactId>springbootJsp</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>springbootJsp Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <build> <finalName>bootdemo</finalName> <plugins> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>${compiler.source}</source> <target>${compiler.target}</target> <encoding>${project.build.sourceEncoding}</encoding> <compilerArguments> <extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <compiler.source>1.7</compiler.source> <compiler.target>1.7</compiler.target> <!-- servlet/jsp/EL (2.4/2.0/?)(2.5/2.1/2.1),(3.0/2.2/2.2),(3.1/2.3/3.0) --> <servlet.version>3.1.0</servlet.version> <jsp.version>2.3.1</jsp.version> <jstl.version>1.2</jstl.version> <junit.version>4.12</junit.version> </properties> <dependencies> <!-- Springboot添加視圖解析器的依賴包 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>${jsp.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>org.objenesis</groupId> <artifactId>objenesis</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>runtime</scope> </dependency> <!-- freemarker jar包導入 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> </dependencies> </project>
(14)啓動項目。
進入 ApplicationMain.java
右擊 --》 Run As --》 Java Application
啓動成功會出現如圖結果:
(15)訪問項目。
在瀏覽器中經過URL訪問項目。 格式: http://主機IP:8080/application.properties中指定的server.context-path的值/@Controller標識的類指定的RequestMapping值
例如: http://127.0.0.1:8080/SpringbootJsp/findById
訪問結果以下:
點擊頁面中的超連接 轉到skip.jsp,進入skipped.jsp頁面,結果以下: