Spring Boot整合MyBatis操作过程

时间:2021-05-20

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/testspring.datasource.username=rootspring.datasource.password=rootspring.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;@SpringBootApplicationpublic 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//加上这个注解,使得支持事务@EnableTransactionManagementpublic 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;@Mapperpublic 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;@Servicepublic 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的操作过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章