【系统学习SpringBoot】springBoot整合Mybatis - Go语言中文社区

【系统学习SpringBoot】springBoot整合Mybatis


学了几天spring boot ,感觉spring boot整合了spring mvc 和spring的优点,,屏蔽了大量的配置文件(虽然spring可以使用注解,但是spring boot让配置更简单,让程序更简单,让整合变得很简单



一。配置流程


(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



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

import org.apache.ibatis.annotations.Mapper;
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Small_Mouse0/article/details/76794485
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 10:50:58
  • 阅读 ( 811 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢