spring、mybatis 配置方式详解(常用两种方式)

请看下面的解释:

spring、mybatis 配置方式详解

1. Spring 整合 MyBatis 方式

Spring 整合 MyBatis 是通过 Sring 的一个对象 MybatisSqlSessionFactoryBean 来实现的。首先导入依赖包:

<!--Spring核心依赖-->
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-core</artifactId>
   <version>${org.springframework-version}</version>
</dependency>
<!--Spring ORM依赖-->
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-orm</artifactId>
   <version>${org.springframework-version}</version>
</dependency>
<!--MyBatis核心依赖-->
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>${mybatis-version}</version>
</dependency>
<!--MyBatis的Spring整合依赖-->
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis-spring</artifactId>
   <version>${mybatis-spring-version}</version>
</dependency>

然后在 Spring 的配置文件中,配置 MybatisSqlSessionFactoryBean:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
   <property name="driverClassName" value="${jdbc.driver}" />
   <property name="url" value="${jdbc.url}" />
   <property name="username" value="${jdbc.username}" />
   <property name="password" value="${jdbc.password}" />
   <!-- 配置连接池属性 -->
   <property name="initialSize" value="${druid.initialSize}" />
   <property name="maxActive" value="${druid.maxActive}" />
   <property name="minIdle" value="${druid.minIdle}" />
</bean>

<!-- 
    配置 MyBatis 的 SqlSessionFactoryBean
    可以设置一些属于 MyBatis 的配置项
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   <property name="dataSource" ref="dataSource" />
   <property name="configLocation" value="classpath:mybatis-config.xml" />
   <property name="mapperLocations" value="classpath*:com/example/mapper/*.xml" />
</bean>

<!-- 
    配置 MyBatis 自动扫描 Mapper 接口
    对应的 Mapper 映射可能位于不同包下,通过通配符配置
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="basePackage" value="com.example.dao" />
</bean>

其中,dataSource 定义了数据源的一些属性,包括 url、username、password 等。而 sqlSessionFactory 则是配置了 Mapper 的映射文件和 Mybatis 的一些配置项。最后 MapperScannerConfigurer 则是配置自动扫描 Mapper 接口。

2. 配置方式二:Mybatis-spring-boot-starter

Mybatis-spring-boot-starter 是我们使用 Spring Boot 快速集成 MyBatis 的方式。

首先,在 pom.xml 中引入如下依赖:


<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

然后在 application.properties 或 application.yml 文件中配置 Mybatis 和数据库连接池的一些属性:


#mybatis
mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath*:mapper/*.xml

#datasource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
#连接池大小
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000

其中,mybatis.config-location 和 mybatis.mapper-locations 是配置 Mybatis 的映射文件和一些属性。 datasouce.* 是配置数据库连接池和数据库连接的一些属性。

示例

示例一:查询数据


@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id=#{id}")
    User getUserById(Integer id);
}

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    UserMapper userMapper;

    @Override
    public User getUserById(Integer id) {
        if(null == id){
            return null;
        }
        return userMapper.getUserById(id);
    }
}

@RestController
public class UserController {

    @Autowired
    UserService userService;

    @GetMapping("/get-user/{id}")
    public User getUserById(@PathVariable Integer id){
        return userService.getUserById(id);
    }

}

上述示例中,我们定义好 UserMapper 接口以及实现类 UserServiceImpl。在控制层,我们通过调用 userService.getUserById(id) 获取对应用户的信息。

示例二:插入数据


@Mapper
public interface UserMapper {

    @Insert("INSERT INTO `user` (`name`, `age`, `phone`) VALUES (#{name}, #{age}, #{phone})")
    int addUser(User user);
}

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    UserMapper userMapper;

    @Override
    public boolean addUser(User user) {
        int result = userMapper.addUser(user);
        if(result > 0){
            return true;
        }
        return false;
    }
}

@RestController
public class UserController {

    @Autowired
    UserService userService;

    @PostMapping("/add-user")
    public boolean addUser(@RequestBody User user){
        return userService.addUser(user);
    }

}

上述示例我们定义了 UserMapper 接口的 addUser(User user) 方法,并在接口实现类 UserServiceImpl 中完成该方法的实现。在控制层中我们通过调用 userService.addUser(user) 接口,实现了新建用户的功能。

以上就是 spring、mybatis 配置方式详解的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring、mybatis 配置方式详解(常用两种方式) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • spring无法引入注解及import org.springframework.web.bind.annotation.*报错的解决

    下面是关于“spring无法引入注解及import org.springframework.web.bind.annotation.*报错的解决”的完整攻略。 问题描述 当我们在Spring项目中引入注解或使用 org.springframework.web.bind.annotation.*包时,可能会出现以下问题:1. 编译时无法引入注解;2. 编译时报…

    Java 2023年5月19日
    00
  • 没有杯子的世界:OOP设计思想的应用实践

    最近看到一个有趣的问题:Person类具有Hand,Hand可以操作杯子Cup,但是在石器时代是没有杯子的,这个问题用编程怎么解决? 简单代码实现 我们先用简单代码实现原问题: @Data public class Person { private final String name; private Hand hand = new Hand(); priv…

    Java 2023年4月22日
    00
  • Java-SpringBoot-Range请求头设置实现视频分段传输

    老实说,人太懒了,现在基本都不喜欢写笔记了,但是网上有关Range请求头的文章都太水了下面是抄的一段StackOverflow的代码…自己大修改过的,写的注释挺全的,应该直接看得懂,就不解释了写的不好…只是希望能给视频网站开发的新手一点点帮助吧. 业务场景:视频分段传输、视频多段传输(理论上配合前端能实现视频预览功能, 没有尝试过)下面是API测试图…

    Java 2023年4月19日
    00
  • JAVA module-info.java文件详解

    JAVA Module 是 JDK 9 之后推出的新特性,可以用来管理和组织 Java 应用程序的代码。在使用 Java module 的时候,需要用到 module-info.java 文件来声明模块的依赖和公共 API 等信息。本文将详细讲解 JAVA module-info.java 文件的相关知识,帮助读者了解如何使用该功能。 1. module-i…

    Java 2023年5月19日
    00
  • Java8 Instant 时间戳实例讲解

    Java8 Instant 时间戳实例讲解 在 Java8 中,引入了 java.time 包,包含了一系列新的日期时间 API,其中 Instant 类可以用来表示时间戳。本文将详细讲解 Instant 类的使用。 Instant 类概述 Instant 类是不可变且线程安全的,它以 Unix 时间戳的形式存储时间,精确到纳秒。Unix 时间戳是指从 19…

    Java 2023年5月20日
    00
  • Spring Boot修改内置Tomcat默认端口号的示例

    请听我详细讲解 “Spring Boot修改内置Tomcat默认端口号的示例”的完整攻略。 一、Spring Boot如何修改Tomcat默认端口号 Spring Boot作为一种快速开发框架,其内置了Tomcat作为默认的Web容器。而默认的端口号是8080端口,但有时候需要把它修改为其他端口号。如何修改呢? 在Spring Boot中修改Tomcat默认…

    Java 2023年5月19日
    00
  • java 学习笔记(入门篇)_java的基础语法

    《Java 学习笔记(入门篇)_Java 的基础语法》是一篇旨在帮助 Java 初学者掌握基础语法的文章。它逐步介绍了 Java 的基础数据类型、运算符、控制语句、数组、面向对象等内容,并给出了一些例子,帮助读者更好地理解这些概念。 以下是该篇攻略的详细介绍: Java 的基础数据类型 Java 的基础数据类型包括整型、浮点型、字符型、布尔型等。这些数据类型…

    Java 2023年5月23日
    00
  • Struts中action线程安全问题解析

    Struts中action线程安全问题解析 背景 Struts是Java Web应用程序的开发框架之一,它采用了MVC的设计模式,其中Action作为控制器部分的一部分,负责处理用户请求并返回响应。在使用Struts进行Web应用程序开发时,一个常见的问题是:是否需要考虑Action的线程安全性?当有多个用户同时发出请求时,是否会出现线程安全问题? 问题分析…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部