springBoot整合Mybatis

转自:https://blog.youkuaiyun.com/Small_Mouse0/article/details/76794485

一。配置流程 



(1). pom.xml 配置依赖 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>xatu.zsl</groupId>
    <artifactId>spring_boot_mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring_boot_mybatis</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--spring boot 整合 mybatis 依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!--spring boot web依赖,,必须的-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--spring boot 测试依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--mysql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>
        <!-- 数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.5</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

(2). 添加 application.yml(yml比起 properties文件看起来清爽很多,简介很多

spring:
  datasource:
    name: spring_boot_mybatis
    url: jdbc:mysql://localhost:3306/mybatis_demo1
    username: root
    password: 1486145487
#    type: com.alibaba.druid.pool.DruidDataSource # 使用druid 数据源
    driver-class-name: com.mysql.jdbc.Driver
#    dbcp2:
#      min-idle: 1
#      max-idle: 2
#      initial-size: 1
#      time-between-eviction-runs-millis: 3000
#      min-evictable-idle-time-millis: 300000
#      validation-query: SELECT "ZTM" FROM DUAL
#      test-while-idle: true
#      test-on-borrow: false
#      test-on-return: false

mybatis:
  mapper-locations: classpath:mapper/UserMapper.xml,classpath:mapper/StudentMapper.xml
  type-aliases-package: xatu.zsl.entity
  • 注意:注释地方是配置数据库连接池的东西(不配置也可以,,测试感觉不出来) 

(3). 配置Mybatis 的mapper文件,,这个文件是mybatis映射的核心文件是必须的。 
在这里扩展一下,放两个mapper文件,内容一样只是为了说明,springBoot整合Mybatis如何配置多个mapper文件

StudentMapper.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="xatu.zsl.mapper.StudentMapper" >

    <insert id="save" parameterType="xatu.zsl.entity.User">
        insert into t_user(username,age) values(#{userName,jdbcType=VARCHAR},#{age,jdbcType=NUMERIC})
    </insert>

    <select id="selectById" resultType="xatu.zsl.entity.User">
        select * from t_user where id = #{id,jdbcType=NUMERIC}
    </select>

    <update id="updateById" parameterType="xatu.zsl.entity.User">
        update t_user set
        username = #{userName,jdbcType=VARCHAR} ,
        age = #{age,jdbcType=NUMERIC}
        where id = #{id,jdbcType=NUMERIC}
    </update>

    <delete id="deleteById">
        delete from t_user where id = #{id,jdbcType=NUMERIC}
    </delete>

    <select id="queryAll" resultType="xatu.zsl.entity.User">
        select * from t_user
    </select>

</mapper>

(4). 设置接口 StudentMapper

package xatu.zsl.mapper;


import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import xatu.zsl.entity.User;

import java.util.List;

/**
 * Created by zsl on 2017/8/6.
 */
@Component
@Mapper
public interface StudentMapper {

    int save(User user);

    User selectById(Integer id);

    int updateById(User user);

    int deleteById(Integer id);

    List<User> queryAll();

}

(5). 编写实体类 User(为了方便就使用两个一样的mapper,能说明问题咋简单砸来

package xatu.zsl.entity;


import java.io.Serializable;

/**
 * Created by zsl on 2017/8/6.
 */
public class User implements Serializable {

    private static final long serialVersionUID = 8809101560720973267L;

    private Integer id;

    private String userName;

    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", age=" + age + "]";
    }


}

(6). 启动文件不用变,,使用test 文件测试

package xatu.zsl;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class SpringBootMybatisApplicationTests {
//
//  @Test
//  public void contextLoads() {
//  }
//
//}
import org.springframework.beans.factory.annotation.Autowired;
import xatu.zsl.entity.User;
import xatu.zsl.mapper.StudentMapper;
import xatu.zsl.mapper.UserMapper;
import xatu.zsl.service.UserService;


@RunWith(SpringRunner.class)
@SpringBootTest()
//相当于  --spring.profiles.active=dev
//@ActiveProfiles(value="dev")
public class SpringBootMybatisApplicationTests {

    @Autowired
    private UserMapper mapper;

    @Autowired
    private StudentMapper studentMapper;
    @Test
    public void testInsert() {
        User user = new User();
        user.setUserName("张飞");
        user.setAge(50);
        mapper.save(user);
        System.out.println("插入用户信息" + user.getUserName());
    }

    @Test
    public void testSelect() {
        User user = mapper.selectById(1);
        System.out.println("查找用户成功:" + user);
    }

    @Test
    public void testUpdate() {
        User user = mapper.selectById(1);
        System.out.println("修改用户信息初:" + user);
        user.setAge(24);
        mapper.updateById(user);
        user = mapper.selectById(1);
        System.out.println("修改用户信息末:" + user);
    }

    @Autowired
    private UserService userService;

    @Test
    public void testTransactional() {
        System.out.println("测试事务处理");
        //测试事务处理
        try {
            userService.insetUser();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("事务处理异常");
        }
    }

    @Test
    public void testSelectStudent() {
        User user = studentMapper.selectById(1);
        System.out.println("studentMapper查找用户成功:" + user);
    }
}
  • 测试运行截图:

这里写图片描述



二。注意细节  


(1). 项目目录结构,,本项目使用IDEA( IDEA,搞java,,谁用谁知道 ) 
这里写图片描述



(2). springBoot整合Mybatis如何配置多个mapper文件,需要在applaction.yml中配置:

mybatis:
  mapper-locations: classpath:mapper/UserMapper.xml,classpath:mapper/StudentMapper.xml
  • 1
  • 2



(3). @Mapper 注解是springBoot整合Mybatis独有的,,mybatis木有。

import org.apache.ibatis.annotations.Mapper;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值