您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用Spring Boot如何實現對MyBatis的整合,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1.加入mybatis-spring-boot-stater的Maven依賴
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency>
2.配置數據源
在src/main/resource中,application.properties配置文件中,這里面添加了一些數據庫連接的信息
spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3.代碼注入數據源
package com.example; import javax.sql.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; import org.springframework.web.servlet.DispatcherServlet; import com.alibaba.druid.pool.DruidDataSource; import com.example.Listener.IndexListener; import com.example.filter.IndexFilter; import com.example.servlet.MyServlet; @SpringBootApplication public class SpringBootSimpleApplication { @Autowired private Environment env; @Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username"));//用戶名 dataSource.setPassword(env.getProperty("spring.datasource.password"));//密碼 dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); dataSource.setInitialSize(2); dataSource.setMaxActive(20); dataSource.setMinIdle(0); dataSource.setMaxWait(60000); dataSource.setValidationQuery("SELECT 1"); dataSource.setTestOnBorrow(false); dataSource.setTestWhileIdle(true); dataSource.setPoolPreparedStatements(false); return dataSource; } public static void main(String[] args) { SpringApplication.run(SpringBootSimpleApplication.class, args); } }
4.增加MyBatis的配置
MyBatisConfig.java類:
package com.example.mybatis; import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.TransactionManagementConfigurer; @Configuration //加上這個注解,使得支持事務 @EnableTransactionManagement public class MyBatisConfig implements TransactionManagementConfigurer { @Autowired private DataSource dataSource; @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return new DataSourceTransactionManager(dataSource); } @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactoryBean() { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); try { return bean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }
MyBatisMapperScannerConfig.java類:
package com.example.mybatis; import org.mybatis.spring.mapper.MapperScannerConfigurer; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 掃描mybatis的接口 */ @Configuration // 因為這個對象的掃描,需要在MyBatisConfig的后面注入,所以加上下面的注解 @AutoConfigureAfter(MyBatisConfig.class) public class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); //獲取之前注入的beanName為sqlSessionFactory的對象 mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); //指定xml配置文件的路徑 mapperScannerConfigurer.setBasePackage("com.example.mybatis.mapper"); return mapperScannerConfigurer; } }
5.mybatis接口配置,這里使用student表作為示例
使用@Mapper注解來標識一個接口為MyBatis的接口,MyBatis會自動尋找這個接口
package com.example.mybatis.mapper; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @Mapper public interface StudentMapper { @Select("select * from student;") public List<Map<String,Object>> find(); @Insert("insert into student(id,name,age,score_sum,score_avg) "+ "values(#{id},'Jim',33,200,100)") public int insert(@Param("id")int id); }
6.service業務層調用接口
package com.example.mybatis; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.mybatis.mapper.StudentMapper; @Service public class StuMybatisService { @Autowired private StudentMapper studentMapper; public List<Map<String,Object>> find(){ return studentMapper.find(); } public int insert(int id){ return studentMapper.insert(id); } }
7.controller控制層調用service業務層
package com.example.mybatis; import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/stumybatis") public class StuMybatisController { private static Logger logger = LogManager.getLogger(StuMybatisController.class); @Autowired private StuMybatisService stuMybatisService; @RequestMapping("/list") public List<Map<String,Object>> getStus(){ logger.info("從數據庫讀取Student集合"); return stuMybatisService.find(); } @RequestMapping("/add") public void addStus(){ logger.info("student表中插入數據"); stuMybatisService.insert(2); } }
最終啟動程序,進行訪問:
http://localhost:8080/stumybatis/list
返回結果:
[{"score_sum":180.0,"name":"張三","id":1,"age":25,"score_avg":90.0},{"score_sum":200.0,"name":"Jim","id":2,"age":33,"score_avg":100.0}]
上述內容就是使用Spring Boot如何實現對MyBatis的整合,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。