項(xiàng)目名稱:010-springboot-web-mybatis
通過(guò)SpringBoot +MyBatis實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)學(xué)生表的查詢操作;
數(shù)據(jù)庫(kù)參考:springboot.sql腳本文件。
啟動(dòng)Linux系統(tǒng)上的mySQL服務(wù)器,通過(guò)Navicat連接
創(chuàng)建新的數(shù)據(jù)庫(kù)springboot,指定數(shù)據(jù)庫(kù)字符編碼為utf-8
向表中插入數(shù)據(jù)
創(chuàng)建一個(gè)新的SpringBoot的Module
指定GAV坐標(biāo)
選擇SpringBoot版本以及web依賴
修改Content root以及Mudule file location
<!--MyBatis整合SpringBoot的起步依賴-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--MySQL的驅(qū)動(dòng)依賴-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
4.在Springboot的核心配置文件application.properties中配置數(shù)據(jù)源
注意根據(jù)自己數(shù)據(jù)庫(kù)的信息修改以下內(nèi)容
#配置內(nèi)嵌Tomcat端口號(hào)
server.port=9090
#配置項(xiàng)目上下文根
server.servlet.context-path=/010-springboot-web-mybatis
#配置數(shù)據(jù)庫(kù)的連接信息
#注意這里的驅(qū)動(dòng)類有變化
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.92.134:3306/springboot?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
5.開發(fā)代碼
使用Mybatis反向工程生成接口、映射文件以及實(shí)體bean,具體步驟參見附錄1
在com.bjpowernode.springboot.web包下創(chuàng)建StudentController并編寫代碼
/**
* ClassName:StudentController
* Package:com.bjpowernode.springboot.web
* Description:
*/
@Controller
public class StudentController {
@Autowired
private StudentService studentService;
@RequestMapping(value = "/springBoot/student")
public @ResponseBody Object student() {
Student student = studentService.queryStudentById(1);
return student;
}
}
在com.bjpowernode.springboot.service包下創(chuàng)建service接口并編寫代碼
/**
* ClassName:StudentService
* Package:com.bjpowernode.springboot.service
* Description:
*/
public interface StudentService {
/**
* 根據(jù)學(xué)生標(biāo)識(shí)獲取學(xué)生詳情
* @param id
* @return
*/
Student queryStudentById(Integer id);
}
在com.bjpowernode.springboot.service.impl包下創(chuàng)建service接口并編寫代碼
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
public Student queryStudentById(Integer id) {
return studentMapper.selectByPrimaryKey(id);
}
}
如果在web中導(dǎo)入service存在報(bào)錯(cuò),可以嘗試進(jìn)行如下配置解決
在Mybatis反向工程生成的StudentMapper接口上加一個(gè)Mapper注解
@Mapper作用:mybatis自動(dòng)掃描數(shù)據(jù)持久層的映射文件及DAO接口的關(guān)系
@Mapper
public interface StudentMapper {
注意:默認(rèn)情況下,Mybatis的xml映射文件不會(huì)編譯到target的class目錄下,所以我們需要在pom.xml文件中配置resource
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
6.啟動(dòng)Application應(yīng)用,瀏覽器訪問(wèn)測(cè)試運(yùn)行
注釋掉StudentMapper接口上的@Mapper注解
在運(yùn)行主類Application上加@MapperScan("com.bjpowernode.springboot.mapper")
或
測(cè)試運(yùn)行
項(xiàng)目名稱:011-springboot-web-mybatis
因?yàn)镾pringBoot不能自動(dòng)編譯接口映射的xml文件,還需要手動(dòng)在pom文件中指定,所以有的公司直接將映射文件直接放到resources目錄下;
在resources目錄下新建目錄mapper存放映射文件,將StudentMapper.xml文件移到resources/mapper目錄下;
在application.properties配置文件中指定映射文件的位置,這個(gè)配置只有接口和映射文件不在同一個(gè)包的情況下,才需要指定
# 指定Mybatis映射文件的路徑
mybatis.mapper-locations=classpath:mapper/*.xml