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日

相关文章

  • 数组实现Java 自定义Queue队列及应用操作

    数组实现Java 自定义Queue队列及应用操作 队列(Queue)是一种基本数据结构,它在算法和程序设计中得到了广泛应用。队列主要是用来存储和管理一系列元素,并在这些元素中进行插入和删除操作。本篇攻略将详细介绍如何用Java数组来实现自定义队列,并列举相应的应用操作。 Queue定义 队列最基本的功能就是FIFO(先进先出),可在队列尾插入一个元素,也可在…

    Java 2023年5月27日
    00
  • Android实现IOS相机滑动控件

    下面我会详细讲解在Android平台上实现类似IOS相机滑动控件的完整攻略。实现该控件需要涉及到自定义控件的开发和手势识别等技能。 一、基本原理 自定义滑动控件:为了实现类似IOS相机的滑动效果,需要将Android的默认控件ScrollView转换为自定义控件,在该自定义控件中重写touch事件以及scroll事件,实现手势识别和滑动效果。 手势识别:在自…

    Java 2023年5月26日
    00
  • springboot的类加载器(org.springframework.boot.loader)过程详解

    Spring Boot提供了一种特殊的类加载器(org.springframework.boot.loader),它可以将应用程序打包成一个可执行的JAR文件,并在运行时动态加载类和资源。在本攻略中,我们将详细讲解Spring Boot的类加载器过程,并提供两个示例来说明其用法。 以下是两个示例,介绍Spring Boot的类加载器过程: 示例一:使用Spr…

    Java 2023年5月15日
    00
  • java日期格式化YYYY-MM-dd遇坑指南小结

    针对“java日期格式化YYYY-MM-dd遇坑指南小结”,以下是完整攻略的详细讲解: 1. 问题背景 在Java中处理日期时间是比较常见的需求,其中日期格式化是一个很重要的知识点,而在格式化日期时,有时会遇到一些坑,特别是在使用大写YYYY格式化年份时,容易引起格式化错误,接下来我们就来分析一下其原因及解决方案。 2. 原因分析 YYYY是一个比较常用的日…

    Java 2023年5月20日
    00
  • IDEA2020.1构建Spring5.2.x源码的方法

    那我这里就来详细讲解一下“IDEA2020.1构建Spring5.2.x源码的方法”的完整攻略。主要步骤如下: 步骤一:下载源码 首先,我们需要下载Spring5.2.x的源码。可以从Spring官方网站上下载,也可以从GitHub上下载。这里以在GitHub上下载为例,具体步骤如下: 打开Spring的GitHub仓库链接:https://github.c…

    Java 2023年5月19日
    00
  • Java调用Shell命令和脚本的实现

    Java调用Shell命令和脚本是一种常见的技术,可以为开发人员带来更灵活的开发方式。在这里,我们将详细讲解Java调用Shell命令和脚本的实现攻略。 什么是Shell命令和脚本 Shell命令和脚本都是运行在Linux/Unix系统上的脚本语言。Shell命令是一种命令行工具,用于在终端中实现系统管理任务。Shell脚本是一种执行自动化任务的脚本文件,可…

    Java 2023年5月26日
    00
  • 一个jsp+AJAX评论系统

    下面是一个jsp+AJAX评论系统的完整攻略。 前期准备 在开始创建一个jsp+AJAX评论系统之前,我们需要准备以下几个方面的内容: 后端语言。对于jsp+AJAX评论系统,我们使用的后端语言是Java。 数据库。我们需要使用数据库来存储和获取评论数据。常见的数据库有MySQL和Oracle等。 Web应用程序服务器。我们需要使用Web应用程序服务器来运行…

    Java 2023年6月15日
    00
  • IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    下面是详细的攻略: 简介 在使用 IDEA 编写 Java 代码时,我们可能会用到 Lombok 工具,这个工具可以帮助我们简化代码,提高开发效率。但是有时我们在使用 Lombok 插件并开启了 Annotation Processing 后,编译依然会报错,这是由于编译器不能正确解析 Lombok 注解所导致的。那么这种情况下应该怎样解决呢?下面我们就来详…

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