Spring Boot整合MyBatis操作过程

网友投稿 251 2023-05-21


Spring Boot整合MyBatis操作过程

1.加入mybatis-spring-boot-stater的Maven依赖

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.1.1

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 orwuEOwCghrg.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> 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> 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> 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的操作过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC4+MyBatis+SQL Server2014实现数据库读写分离
下一篇:spring boot的拦截器简单使用示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~