介紹:java
上篇給你們介紹了ssm多模塊項目的搭建,在搭建過程當中spring整合springmvc和mybatis時會有不少的東西須要咱們進行配置,這樣不只浪費了時間,也比較容易出錯,因爲這樣問題的產生,Pivotal團隊提供了一款全新的框架,該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。經過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。mysql
特色:git
ok,關於springboot的講解就到這裏你們想了解的更詳細能夠自行百度。github
搭建springboot項目我推薦你們用idea或者sts(spring tool suite spring公司本身研發的一款編輯器),我如今用的是idea,因此接下來我是用idea搭建項目的web
1、建立項目spring
填寫完Group和Atrifact後點擊下一步,這裏我選擇的是jar,由於官方文檔推薦的是打包成JAR,因此這裏就不過多解釋了。
sql
這裏勾選上web數據庫
這裏勾選上MySQL、JDBC和Mybatis點擊下一步apache
這裏輸入項目名和項目路徑後點擊完成api
這是新建完成後的項目結構
2、添加pom.xml依賴
由於springboot不推薦使用jsp作頁面,若是想要使用就必需的添加jsp的依賴
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.chaoqi</groupId> <artifactId>springboot_demo2</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot_demo2</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--添加jsp依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
3、springboot整合springmvc
由於在建立項目的時候咱們選擇了mybatis和jdbc因此在這裏也要把他們兩也給配置進去
編輯application.properties
# 頁面默認前綴目錄
spring.mvc.view.prefix=/WEB-INF/jsp/
# 響應頁面默認後綴
spring.mvc.view.suffix=.jsp
#開發配置
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 123456
# mybatis接口文件位置
mybatis.mapper-locations: classpath:mapper/*.xml
mybatis.type-aliases-package: com.chaoqi.springboot_demo2.domain
若是你們習慣用application.yml那也能夠用,可是用application.yml在第一次啓動項目的時候必定要maven clean一下,否則會報錯。
server: port: 8080 spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp datasource: url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver mybatis: mapper-locations: classpath:mapping/*.xml type-aliases-package: com.chaoqi.springboot_demo2.domain
編輯完application.properties以後再src/mian下建立webapp目錄,結構以下
新建IndexController
package com.chaoqi.springboot_test.web; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class IndexController { private static final String INDEX = "index"; @RequestMapping("/show") public String getIndex() { return INDEX; } }
運行main函數
訪問頁面,成功
4、springboot整合mybatis
建立數據庫表
-- ---------------------------- -- Table structure for music_info -- ---------------------------- DROP TABLE IF EXISTS `music_info`; CREATE TABLE `music_info` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `singer_name` varchar(100) NOT NULL COMMENT '歌手名', `music_size` varchar(100) NOT NULL COMMENT '歌曲大小', `music_name` varchar(100) NOT NULL COMMENT '歌曲名', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of music_info -- ---------------------------- INSERT INTO `music_info` VALUES ('1', '小三', '3.2M', '起風了'); INSERT INTO `music_info` VALUES ('2', '劉德華', '3.0M', '忘情水'); INSERT INTO `music_info` VALUES ('3', '豬點點', '5.0M', '會寫程序的小豬');
建立pojo
package com.chaoqi.springboot_test.dao.domain; public class MusicInfo { // 主鍵id private Integer id; // 歌手名 private String singerName; // 歌曲大小 private String musicSize; // 歌曲名 private String musicName; /** * 獲取 主鍵id music_info.id * * @return 主鍵id */ public Integer getId() { return id; } /** * 設置 主鍵id music_info.id * * @param id 主鍵id */ public void setId(Integer id) { this.id = id; } /** * 獲取 歌手名 music_info.singer_name * * @return 歌手名 */ public String getSingerName() { return singerName; } /** * 設置 歌手名 music_info.singer_name * * @param singerName 歌手名 */ public void setSingerName(String singerName) { this.singerName = singerName == null ? null : singerName.trim(); } /** * 獲取 歌曲大小 music_info.music_size * * @return 歌曲大小 */ public String getMusicSize() { return musicSize; } /** * 設置 歌曲大小 music_info.music_size * * @param musicSize 歌曲大小 */ public void setMusicSize(String musicSize) { this.musicSize = musicSize == null ? null : musicSize.trim(); } /** * 獲取 歌曲名 music_info.music_name * * @return 歌曲名 */ public String getMusicName() { return musicName; } /** * 設置 歌曲名 music_info.music_name * * @param musicName 歌曲名 */ public void setMusicName(String musicName) { this.musicName = musicName == null ? null : musicName.trim(); } @Override public String toString() { return "MusicInfo{" + "id=" + id + ", singerName='" + singerName + '\'' + ", musicSize='" + musicSize + '\'' + ", musicName='" + musicName + '\'' + '}'; } }
建立mapper.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.chaoqi.springboot_test.dao.mapper.MusicInfoMapper"> <resultMap id="BaseResultMap" type="com.chaoqi.springboot_test.dao.domain.MusicInfo"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="singer_name" jdbcType="VARCHAR" property="singerName" /> <result column="music_size" jdbcType="VARCHAR" property="musicSize" /> <result column="music_name" jdbcType="VARCHAR" property="musicName" /> </resultMap> </mapper>
建立mapper
package com.chaoqi.springboot_test.dao.mapper; import com.chaoqi.springboot_test.dao.domain.MusicInfo; import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; import java.util.List; public interface MusicInfoMapper { @ResultMap("BaseResultMap") @Select("select * from music_info") List<MusicInfo> selectAll(MusicInfo musicInfo); }
service接口
package com.chaoqi.springboot_test.service; import com.chaoqi.springboot_test.dao.domain.MusicInfo; import java.util.List; public interface MusicInfoService { public List<MusicInfo> getMusicInfo(MusicInfo musicInfo); }
service實現類
package com.chaoqi.springboot_test.service.impl; import com.chaoqi.springboot_test.dao.domain.MusicInfo; import com.chaoqi.springboot_test.dao.mapper.MusicInfoMapper; import com.chaoqi.springboot_test.service.MusicInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class MusicInfoServiceImpl implements MusicInfoService { @Autowired private MusicInfoMapper musicInfoMapper; @Override public List<MusicInfo> getMusicInfo(MusicInfo musicInfo) { List<MusicInfo> musicInfos = musicInfoMapper.selectAll(null); return musicInfos; } }
建立完成後的結構以下
編輯indexController
package com.chaoqi.springboot_test.web; import com.chaoqi.springboot_test.dao.domain.MusicInfo; import com.chaoqi.springboot_test.service.MusicInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller public class IndexController { private static final String INDEX = "index"; @Autowired private MusicInfoService musicInfoService; @RequestMapping("/show") public String getIndex() { return INDEX; } @RequestMapping("/music") @ResponseBody public List<MusicInfo> getMusicInfo(MusicInfo musicInfo) { List<MusicInfo> musicInfoList = musicInfoService.getMusicInfo(null); return musicInfoList; } }
給SpringbootTestApplication類加上註解@MapperScan("com.chaoqi.springboot_test.dao.mapper")
package com.chaoqi.springboot_test; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @MapperScan("com.chaoqi.springboot_test.dao.mapper") public class SpringbootTestApplication { public static void main(String[] args) { SpringApplication.run(SpringbootTestApplication.class, args); } }
運行項目,成功,springboot+springmvc+mybatis整合完成(源碼下載地址:https://github.com/caicahoqi/ChaoqiIsPrivateLibrary)
最後打一波廣告,由於springboot這個框架流行的時間還不長,在搭建框架中可能會出現一些意向不到的錯誤,可能有些錯誤百度也不必定有答案,若是實在解決不了不妨加一下咱們的java開發羣294357875裏面有不少大神爲你們解決各類疑難雜症。