springboot学习笔记-整合mybatis

拿铁Latte 拿铁Latte     2022-08-01     371

关键词:

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/

 

springboot学习笔记--[springboot集成阿里druid数据源,整合mybatis搭建一个案例试试](代码片段)

文章目录1.springboot整合阿里数据源2.springboot整合Mybatis3.试试案例测试1.springboot整合阿里数据源首先在pom.xml文件中导入依赖坐标<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</versio... 查看详情

mybatis-plus学习笔记(代码片段)

目录1.Mybatis-Plus简介1.1Mybatis-Plus介绍1.2代码以及文档1.3特性1.4框架结构1.5作者2.快速入门2.0准备工作2.1Mybatis整合Mybatis-Plus2.1.1原生Mybatis查询2.1.2使用Mybatis-Plus查询2.2Spring&Mybatis整合Mybatis-Plus2.3SpringBoot、Mybatis整合Mybatis 查看详情

springboot学习10:springboot整合mybatis

需求:通过使用SpringBoot+SpringMVC+MyBatis整合实现一个对数据库中的t_user表的CRUD的操作1、创建maven项目,添加项目所需依赖<!--springboot项目依赖的父项目--><parent><groupId>org.springframework.boot</groupId><artifactId> 查看详情

springmvc学习笔记-springmvc整合mybatis之service

springmvc学习笔记(8)-springmvc整合mybatis之servicespringmvc学习笔记8-springmvc整合mybatis之service定义service接口在spring容器配置service事务控制本文记录如何整合service,包括定义spring接口,在spring容器配置service以及事务控制。让spring管理servic... 查看详情

学习整合springboot2.0和mybatis,实现基本的crud

前言:本文是在自己整合springboot2.0和mybatis时的过程和踩得坑。先附上github地址:https://github.com/yclxt/springboot-mybatis.git环境/版本:工具:IntellijIDEA2018.3JDK:1.8Springboot:2.0.4.RELEASEMybatis:1.3.2由于本人是初学者,对druid和handlePage不太熟 查看详情

第275天学习打卡(知识点回顾springboot整合mybatis操作)

知识点回顾springboot整合MyBatis操作1.配置模式全局配置文件SqlSessionFactory:自动配置好了SqlSession:自动配置了SqlSessionTemplate组合了SqlSession@Import(AutoConfiguredMapperScannerRegistrar.class)Mapper:只要我们写的操作MyBatis的接口标注了@Map 查看详情

mybatis学习笔记--maven+spring+mybatis从零开始搭建整合详细过程(下)

继续 mybatis学习笔记(五)--maven+spring+mybatis从零开始搭建整合详细过程(上) 五、使用监听器启动Spring容器1、修改pom.xml文件,添加Spring-web2、修改web.xml,配置启动Spring容器3、新建BookServer4、新建BookServlet5、修改Application... 查看详情

第276天学习打卡(知识点回顾springboot整合mybatis-plus)

知识点回顾springboot整合Mybatis-plus自动配置MyBatisPlusAutoConfiguration配置类,MyBatisPlusProperties配置项绑定。mybatis-plus:xxx就是对mybatis-plus的定制SqlSessionFactory自动配置好,底层是容器中默认的数据源mapperLocations自动配置好的。有... 查看详情

springboot学习笔记-3整合redis&mongodb

一.整合redis1.1建立实体类@Entity@Table(name="user")publicclassUserimplementsSerializable{@Id@GeneratedValue(strategy=GenerationType.AUTO)privateLongid;privateStringname;@DateTimeFormat(pattern="yyyy-MM-ddHH:m 查看详情

springboot学习笔记:整合aop(代码片段)

本文介绍SpringBoot整合aop(面向切面编程)一.创建一个SpringBoot项目引入相应的依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency 查看详情

springboot学习笔记--整合thymeleaf

1.新建SpringBoot项目添加spring-boot-starter-thymeleaf依赖1<dependency>2<groupId>org.springframework.boot</groupId>3<artifactId>spring-boot-starter-thymeleaf</artifactId>4</dep 查看详情

springboot整合jsp的那些坑(springboot学习笔记之三)

SpringBoot整合Jsp步骤:1.新建一个springboot项目2.修改pom文件  <dependency>         <groupId>org.springframework.boot</groupId>    &n 查看详情

springboot+mybatis学习笔记(代码片段)

Springboot+Mybatis实战笔记目录结构1.controller层:控制层-->调用业务层方法来控制业务逻辑2.service层3.dao层:持久层,主要与数据库交互4.entity层:实体层-->数据库在项目中的类5.resources下的mapper.userMap6.controller层和service层注解... 查看详情

elasticsearch学习笔记4:springboot整合es

一、编写ES配置类importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;//Spring两步骤://1、找对象//2、放到spring中待用@ConfigurationpublicclassElasticSearc 查看详情

springboot整合mybatis

springboot本来可以使用jpa进行数据库操作,但是考虑到jpa的资料比较少,学习成本比较大,不是所有的人都可以十分了解,因此考虑采用mybatis来进行数据库操作。1、新建maven项目,在pom中添加相关依赖。<projectxmlns="http://maven.apa... 查看详情

springboot学习笔记:整合thymeleaf(代码片段)

1.引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>2.添加配置#关闭页面缓存spring.thymeleaf.cache& 查看详情

elasticsearch学习笔记4:springboot整合es(代码片段)

一、编写ES配置类importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;//Spring两步骤://1、找对象//2、放到spring中待用@ConfigurationpublicclassElasticSearc 查看详情

springboot整合mybatis(代码片段)

SpringBoot整合MyBatisSpringBoot整合MyBatisSpringBoot是一个快速开发应用程序的框架,而MyBatis是一个提供ORM支持的优秀框架。在本文中,我们将学习如何将SpringBoot与MyBatis整合,以便我们能够更加轻松地开发Web应用程序。步骤创建新的Spri... 查看详情