前言:
本項目基於maven構建,使用mybatis-spring-boot作為spring-boot項目的持久層框架
spring-boot中使用mybatis持久層框架與原spring項目使用方式和注解都不相同,需要依賴mybatis-spring-boot包
1、引入mybatis和數據庫及其他項目依賴
1.1、引入mybatis依賴
- <!-- mybatis-spring-boot --> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency>
1.2、引入mysql 驅動
- <!-- mysql--> <dependency> <groupId></groupId> <artifactId></artifactId> </dependency>
1.3、項目pom.xml一覽
- <project= =
- => <modelVersion></modelVersion> <groupId></groupId> <artifactId></artifactId> <packaging></packaging> <version></version> <name></name> <parent> <groupId></groupId> <artifactId></artifactId> <version></version> </parent> <dependencies>
- <dependency> <groupId></groupId> <artifactId></artifactId> <exclusions><exclusion><groupId></groupId> <artifactId></artifactId></exclusion></exclusions>> </dependency>
- <dependency> <groupId></groupId> <artifactId></artifactId> </dependency>
- <dependency> <groupId></groupId> <artifactId></artifactId> </dependency> <dependency> <groupId></groupId> <artifactId></artifactId> </dependency>
- <dependency> <groupId></groupId> <artifactId></artifactId> </dependency> <dependency> <groupId></groupId> <artifactId></artifactId> <scope></scope> </dependency> <dependency> <groupId></groupId> <artifactId></artifactId> <scope></scope> </dependency>
- <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency>
- <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> </dependencies> <profiles> <profile> <id></id> <dependencies> > <dependency> <groupId></groupId> <artifactId></artifactId> <type></type> </dependency> </dependencies> </profile> </profiles>
- <build> <plugins> <plugin> <groupId></groupId> <artifactId></artifactId> </plugin> </plugins> </build> <repositories> <repository> <id></id> <url></url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id></id> <url></url> </pluginRepository> </pluginRepositories> </project>
2、配置數據庫連接參數、設置mybatis的mappers所在包以及spring-boot服務參數配置
在項目根目錄下創建一個application.properties,該文件用於定義spring-boot的相關參數及數據庫參數,以及配置mybatis的mappers掃描路徑
如果是maven項目,application.properties放在src/main/resource/目錄下
配置如下:
spring.datasource.url=jdbc:MySQL://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=eguid
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=5
spring.datasource.max-wait=10000
spring.datasource.min-idle=1
spring.datasource.initial-size=3
server.port=8088
server.session.timeout=10
server.tomcat.max-threads=800
server.tomcat.uri-encoding=UTF-8
mybatis.mapperLocations=classpath:cn/eguid/carSysWEB/mappers/*.xml
3、mybatis的dao接口及mapper.xml實現
3.1、定義mybatis的dao接口
該接口與mybatis-spring方式不同,需要加上一個@Mapper注解
@Mapper注解用於聲明該接口為mybatis的dao接口
- package import import import import //使用Mapper注解聲明該接口為mybatis的dao接口 @Mapper publicinterface public public(value = ) String org_parent_coding);
- public(value=) String dep_id);
- }
3.2、dao接口對應的mapper.xml
mapper.xml與原mybatis寫法相同
- <!DOCTYPE mapper
-
- > <mapper=> <resultMap= => <id= =/> <result= =/> <result= =/> <result= =/> </resultMap> <select= => </select> <select= = => =#{parentCoding,=}
- </select> <select= = => =#{dep_id}
- </select> </mapper>
補充:
做完以上步驟,就可以在service中直接通過spring的IOC注解注入mybatis的dao實現,我這里的dao接口是GetInfoDao,所以是注入‘getInfoDao’就可以正確引用該持久層;
注意:必須在spring-boot的入口類中開啟@ComponentScan注解才能掃描到項目中所有注解
- package import import import import @SpringBootApplication //開啟通用注解掃描 @ComponentScan publicclassextends * 實現SpringBootServletInitializer可以讓spring-boot項目在web容器中運行
- */
- protected this returnsuper publicstaticvoid class }
5、總結:
1、spring-boot項目中使用mabatis需要依賴mybatis-spring-boot
2、需要在application.xml中定義數據庫連接參數以及mybatis的mappers文件掃描路徑
3、mybatis的dao接口需要加上@Mapper注解才能被spring-boot正確掃描到
4、spring-boot開啟注解掃描的注解是@ComponentScan
6.讓外部Tomcat運行Spring Boot項目
只需要在原項目上做兩件事
1、在pom.xml中排除org.springframework.boot的內置tomcat容器
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
2、spring-boot入口實現SpringBootServletInitializer接口
補充:SpringBootServletInitializer接口依賴javax.servlet包,需要在pom.xml中引入該包
spring-boot入口類必須實現SpringBootServletInitializer接口的configure方法才能讓外部容器運行spring-boot項目
注意:SpringBootServletInitializer接口需要依賴 javax.servlet
- package import import import import import import import import @SpringBootApplication // 開啟通用注解掃描 @ComponentScan publicclassextends * 實現SpringBootServletInitializer可以讓spring-boot項目在web容器中運行
- */
- protected this returnsuper publicstaticvoid class }