轉自:https://blog.csdn.net/iku5200/article/details/82856621
前期準備
IDEA、Oracle、maven、JDK 配置
新建項目
2.
3.
4.
5.
6.
修改配置
- maven本地倉庫設置 File > settings >
- 修改pom.xml
加入如下依賴,該過程較慢,等maven下載完依賴包(oracle需自己手動構建到maven中):
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Spring Boot JDBC Pool -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>9.0.29</version>
</dependency>
<!-- Spring Boot JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- oracle -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10.2.0.3.0</version>
</dependency>
- 刷新maven
- 不使用application.properties文件,使用更加簡潔的application.yml文件(備註:其實SpringBoot底層會把application.yml文件解析爲application.properties)。將resource文件夾下原有的application.properties文件刪除,創建application.yml和application-dev.yml配置文件。
application.yml
spring:
profiles:
active: dev
application-dev.yml
server:
port: 8080
spring:
jpa:
database: oracle
datasource:
username: scott
password: scott
url: jdbc:oracle:thin:@127.0.0.1:1521/orcl
driver-class-name: oracle.jdbc.driver.OracleDriver
mybatis:
mapper-locations: classpath:mapping/*Mapper.xml
type-aliases-package: com.example.entity
#showSql
logging:
level:
com:
example:
mapper : debug
配置文件意義:
在項目中配置多套環境的配置方法。
因爲現在一個項目有好多環境,開發環境,測試環境,準生產環境,生產環境,每個環境的參數不同,所以我們就可以把每個環境的參數配置到yml文件中,這樣在想用哪個環境的時候只需要在主配置文件中將用的配置文件寫上就行如application.yml
筆記:在Spring Boot中多環境配置文件名需要滿足application-{profile}.yml的格式,其中{profile}對應你的環境標識,比如:
application-dev.yml:開發環境
application-test.yml:測試環境
application-prod.yml:生產環境
至於哪個具體的配置文件會被加載,需要在application.yml文件中通過spring.profiles.active屬性來設置,其值對應{profile}值。
還有配置文件中最好不要有中文註釋,會報錯。解決方案:spring boot 中application.yml中文亂碼
- 接下來把啓動文件移到com.example下,而且springboot的啓動類不能放在java目錄下!!!必須要個包將它包進去,否則會報錯誤。
創建實體類實現業務流程
- 預先創建數據庫表myuser
CREATE TABLE myuser(
id number NOT NULL,
userName varchar(32) NOT NULL,
passWord varchar(50) NOT NULL,
realName varchar(32) DEFAULT NULL,
PRIMARY KEY (id)
);
填入如下數據:
- 創建包controller、entity、mapper、service。resources下創建mapping文件夾,用於寫sql語句,也可以用註解的方式直接寫在mapper文件裏。
框架結構
UserMapper.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.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.entity.User">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="userName" jdbcType="VARCHAR" property="userName" />
<result column="passWord" jdbcType="VARCHAR" property="passWord" />
<result column="realName" jdbcType="VARCHAR" property="realName" />
</resultMap>
<select id="Sel" resultType="com.example.entity.User">
select * from myuser where id = #{id}
</select>
</mapper>
UserController.java
package com.example.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.service.UserService;
@RestController
@RequestMapping("/testBoot")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("getUser/{id}")
public String GetUser(@PathVariable int id){
return userService.Sel(id).toString();
}
}
User.java
package com.example.entity;
public class User {
private Integer id;
private String userName;
private String passWord;
private String realName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
", realName='" + realName + '\'' +
'}';
}
}
UserMapper.java
package com.example.mapper;
import org.springframework.stereotype.Repository;
import com.example.entity.User;
@Repository
public interface UserMapper {
User Sel(int id);
}
UserService.java
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.entity.User;
import com.example.mapper.UserMapper;
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public User Sel(int id){
return userMapper.Sel(id);
}
}
DemoApplication.java
package com.example;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com/example/mapper")
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 輸入網址,查看結果
一些經驗(坑)
1、數據庫連接問題,一般默認的數據庫SID都是orcl
配置文件中要注意:
- springboot啓動錯誤: 找不到或無法加載主類(原因在於改寫了main所在的文件名)
- Springboot啓動application報錯:Field userMapper in xxx required a bean of type xx that could not be found
原因在於代碼中啓動類中缺少內容(參考https://blog.csdn.net/pmdream/article/details/81188426)
解決辦法:
在主函數類上添加以上註解,可以掃描dao包中的所有接口,替代在每個dao中寫@Mapper註解,這樣會提高耦合度。
加上@MapperScan註解 後面是mapper接口的類的地址
@MapperScan("com.example.mapper")
@MapperScan
的理解:使用該註解,可以免去每個Mapper類都加上@Mapper
這個註解也可以同時掃描多個包,
如果如果mapper類沒有在Spring Boot主程序可以掃描的包或者子包下面,可以使用如下方式進行配置
@SpringBootApplication
@MapperScan({"com.example.*.mapper","org.example.*.mapper"})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
-
無法引入org.apache.ibatis.annotations.Select , 解決pom.xml中引入如下版本的mybatis
-
yml 配置文件不生效,解決注意格式問題(冒號後面跟上一個空格)
-
數據庫連接池不用默認的,改用tomcat-jdbc 需要在pom.xml中加入相關dependency