SpringBoot整合MyBatis的三种方式

写一篇关于SpringBoot整合MyBatis的笔记,这里我写出三种整合的方式,分别为:注解版,xml版,配置类版。在此之前我对整合的实现做出一定简述:仓库管理使用的是Maven,SpringBoot默认集成了JDBC,当然我们可以使用更强大的Druid做为我们的数据源。无论哪种整合方式都需要添加myBatis的相关依赖:

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

并且我使用的是MySql数据库:

<!--mysql-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

一、注解版
properties.yml数据库链接配置

server:
  port: 8066

spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/yjkf_iot?seUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: ******

数据库实体类:

package com.yjkf.zh.admin.model;

public class SysUser {

	private long id;
    private String userName;
    private String  password;
    private String nickName;
    private Long status;
    private String mobile;
    private Long deptId;
    private String salt;
	//省略get/set
}

mapper接口

import com.yjkf.zh.test.model.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {

    @Select("select * from sys_user where id=#{id}")
    public SysUser getUserId(long id);
}

collector控制视图:

import com.yjkf.zh.test.mapper.UserMapper;
import com.yjkf.zh.test.model.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user/{id}")
    public SysUser getUser(@PathVariable("id") long id){
        return userMapper.getUserId(id);
    }
}

访问接口,以JSON的形式返回数据,特别注意,每个实体类都配置了@mapper,也可以在启动类上添加

@MapperScan(value="com.***.mapper")		//批量扫描所有mapper接口

,有些情况存在驼峰命名的影响,会获取不到值,在这里可以单独配置一个驼峰命名的配置类:

	@Configuration
	public class MyBatisConfig{
	@Bean
	public ConfigurationCustomizer configurationCustion(){
		return new ConfigurationCustomizer(){
			public void customize(Configuration configuration){
				configuration.setMapUnderscoreToCamelCase(true);
			}
		}
	}
}

二、配置文件

resources下新建mybatis文件夹,并添加mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <settings>
   <!--驼峰命名设置-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>	
    </settings>
</configuration>

并在mybatis下新建文件夹mapper,创建UserMapper.xml映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yjkf.zh.test.mapper.UserMapper">
    <select id="getUserId" resultType="com.yjkf.zh.test.model.SysUser">
    select * from sys_user where id = #{id}
  </select>
</mapper>

对应的mapper接口为:

@Mapper
public interface UserMapper {

    //@Select("select * from sys_user where id=#{id}")
    public SysUser getUserId(long id);
}

properties.yml文件添加:

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

controller控制类没有变动。

三、类配置方式


import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;


import javax.sql.DataSource;

@Configuration
@MapperScan("com.yjkf.zh.**.dao")
public class MybatisConfig {

    @Autowired
    private DataSource dataSource;

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception{
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setTypeAliasesPackage("com.zhkf.zh.**.model");   //扫描model
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:**/sqlmap/*.xml"));     //扫描映射文件
        return sessionFactoryBean.getObject();
    }
}

这里内部执行原理太多,不便于介绍,适用于初学者体验以及大家复习参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值