Spring boot 学习笔记 (二)- 整合MyBatis

Spring boot 学习笔记 (二)- 整合MyBatis

Spring Boot中整合MyBatis,并通过注解方式实现映射。

整合MyBatis

Spring boot 学习笔记 (一)- Hello world 为基础项目,在pom.xml中添加如下依赖

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

<dependency>
  <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.21</version>
</dependency>

在application.properties 文件下 添加mysql的连接配置(切记不要在行尾留有空格,否则报com.mysql.jdbc.Driver   Class Not Found error,其实只是含有空格导致找不到类)

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

同其他Spring Boot工程一样,简单且简洁的的完成了基本配置,下面看看如何在这个基础下轻松方便的使用MyBatis访问数据库。

添加com.latteyan.entity包,并添加User 类

package com.latteyan.entity;

import java.io.Serializable;

public class User implements Serializable{

    private static final long serialVersionUID = 8002149736589557777L;

    private Long id;

    private String name;

    private Integer age;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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

添加com.latteyan.dao包,并添加UserMapper接口

package com.latteyan.dao;

import java.util.List;
import java.util.Map;

import com.latteyan.entity.User;

import org.apache.ibatis.annotations.*;

@Mapper
public interface UserMapper {
    // 通过Parameter新增
    @Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
    int insertByParameter(@Param("name") String name, @Param("age") Integer age);

    // 通过Map新增
    @Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})")
    int insertByMap(Map<String, Object> map);  

    // 通过Object新增
    @Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
    int insertByObject(User user);

    // Delete By Id
    @Delete("DELETE FROM user WHERE id =#{id}")
    void delete(Long id);

    // Update
    @Update("UPDATE user SET age=#{age} WHERE name=#{name}")
    void update(User user);

    // Find by Parameter
    @Select("SELECT * FROM USER WHERE NAME = #{name}")
    User findByName(@Param("name") String name);

    // 通过@Results,绑定返回值
    @Results({
        @Result(property = "name", column = "name"),
        @Result(property = "age", column = "age")
    })
    @Select("SELECT name, age FROM user")
    List<User> findAll();
}
通过UserMapper 接口我们就可以现在访问数据库的功能.

单元测试
package com.latteyan;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.latteyan.dao.UserMapper;
import com.latteyan.entity.User;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void add() throws Exception {
        // insert by parameter
        userMapper.insertByParameter("zhangShan", 20);

        // insert by object
        User user = new User();
        user.setAge(21);
        user.setName("LiSi");
        userMapper.insertByObject(user);

        // insert by map
        Map<String, Object> map = new HashMap<>();
        map.put("name", "huangwu");
        map.put("age", 22);
        userMapper.insertByMap(map);

        User zhangShan = userMapper.findByName("zhangShan");
        Assert.assertEquals(20, zhangShan.getAge().intValue());
        User LiSi = userMapper.findByName("LiSi");
        Assert.assertEquals(21, LiSi.getAge().intValue());
        User huangwu = userMapper.findByName("huangwu");
        Assert.assertEquals(22, huangwu.getAge().intValue());
    }

    @Test
    public void udpate() throws Exception {
        User user = userMapper.findByName("zhangShan");
        user.setAge(50);
        userMapper.update(user);

        user = userMapper.findByName("zhangShan");
        Assert.assertEquals(50, user.getAge().intValue());

        userMapper.delete(user.getId());
    }

    @Test
    public void findAll() throws Exception {
        List<User> users = userMapper.findAll();
        Assert.assertNotNull(users);
    }

}

参考:http://blog.didispace.com/springbootmybatis/

时间: 2024-10-18 14:59:19

Spring boot 学习笔记 (二)- 整合MyBatis的相关文章

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

spring boot 1.5.4 整合 mybatis(十二)

上一篇:spring boot 1.5.4 整合log4j2(十一) Spring Boot集成Mybatis 更多更详细的配置参考文件:application.properties和<SpringBoot之application配置详解>(新版本新增属性缺失)  或参考官网http://projects.spring.io/spring-boot/ Spring Boot集成Mybatis有两种方式: 方式一:传统的引入外部资源配置的方式,方便对mybatis的控制: 方式二:mybatis

Spring Batch学习笔记二

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自定义的工作单元,它是Job的主要构件块:每一个Step由三部分组成:ItemReader.ItemProcessor.ItemWriter:这三个部分将执行在每一条被处理的记录上,ItemReader读取每一条记录,然后传递给ItemProcessor处理,最后交给ItemWriter做持久化:It

Spring视频学习笔记(二)

Spring视频学习笔记(二) XML配置里的Bean自动装配(三个来测试实现) /** * Person类 * */ public class Person { private String name; private Address address; private Car car; public String getName() { return name; } public void setName(String name) { this.name = name; } public Ad

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

Spring boot 学习笔记 - Hello world

Spring boot 学习笔记 - Hello world spring boot介绍: spring-boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. Hello world 通过官网https://start.spring.io/

spring boot 学习笔记

Spring Boot系列(一):Spring Boot 入门篇 Spring Boot系列(二):web综合开发 Spring Boot系列(三):Spring Boot中Redis的使用 Spring Boot系列(四):thymeleaf使用详解 Spring Boot系列(五):spring data jpa的使用 Spring Boot系列(六):如何优雅的使用mybatis Spring Boot系列(七):springboot+mybatis多数据源最简解决方案 Spring Bo

我的第一个spring boot程序(spring boot 学习笔记之二)

第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相关知识点时会再次理解.要运行起第一个Spring boot特别简单,用IDEA包含了Spring Boot的引导,直接新建一个spring boot项目. 注意: 1.第一次新建Spring boot项目的时候,maven会下载大量的依赖到本地,所以特别慢,耐心等待或者用国内的maven公库都行(自

Spring Boot 学习笔记--整合Thymeleaf

1.新建Spring Boot项目 添加spring-boot-starter-thymeleaf依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-thymeleaf</artifactId> 4 </dependency> 2.添加静态文件 根据spring boot默认规则,脚本和样式默