详解springboot中mybatis注解形式

 更新时间:2018年10月12日 14:08:23   投稿:laozhang  
在本文中小编给大家分享了关于springboot中mybatis注解形式的介绍,有兴趣的可以跟着学习下。

springboot整合mybatis对数据库进行访问,本实例采用注解的方式,如下:

pom.xml文件

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
  </parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
 
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.45</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.1</version>
    </dependency>
  </dependencies>
 
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

domain类

package com.rookie.bigdata.domain;
 
/**
 * @author
 * @date 2018/10/9
 */
public class Student {
  private Long stuNo;
  private String name;
  private Integer age;
  public Student() {
  }
  public Student(String name, Integer age) {
    this.name = name;
    this.age = age;
  }
  public Student(Long stuNo, String name, Integer age) {
    this.stuNo = stuNo;
    this.name = name;
    this.age = age;
  }
  public Long getStuNo() {
    return stuNo;
  }
  public void setStuNo(Long stuNo) {
    this.stuNo = stuNo;
  }
  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;
  }
  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Student student = (Student) o;
    if (stuNo != null ? !stuNo.equals(student.stuNo) : student.stuNo != null) return false;
    if (name != null ? !name.equals(student.name) : student.name != null) return false;
    return age != null ? age.equals(student.age) : student.age == null;
  }
  @Override
  public int hashCode() {
    int result = stuNo != null ? stuNo.hashCode() : 0;
    result = 31 * result + (name != null ? name.hashCode() : 0);
    result = 31 * result + (age != null ? age.hashCode() : 0);
    return result;
  }
  @Override
  public String toString() {
    return "Student{" +
        "stuNo=" + stuNo +
        ", name='" + name + '\'' +
        ", age=" + age +
        '}';
  }
}

StudentMapper类

package com.rookie.bigdata.mapper;
import com.rookie.bigdata.domain.Student;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
/**
 * @author
 * @date 2018/10/9
 */
@Mapper
public interface StudentMapper {
 
  @Select("SELECT * FROM student WHERE name = #{name}")
  Student findByName(@Param("name") String name);
 
  @Results({
      @Result(property = "name", column = "name"),
      @Result(property = "age", column = "age")
  })
  @Select("SELECT name, age FROM student")
  List<Student> findAll();
 
  @Insert("INSERT INTO student(name, age) VALUES(#{name}, #{age})")
  int insert(@Param("name") String name, @Param("age") Integer age);
 
  @Update("UPDATE student SET age=#{age} WHERE name=#{name}")
  void update(Student student);
 
  @Delete("DELETE FROM student WHERE id =#{id}")
  void delete(Long id);
 
  @Insert("INSERT INTO student(name, age) VALUES(#{name}, #{age})")
  int insertByUser(Student student);
 
  @Insert("INSERT INTO student(name, age) VALUES(#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})")
  int insertByMap(Map<String, Object> map);
 
}

测试类如下:

package com.rookie.bigdata.mapper;
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 org.springframework.transaction.annotation.Transactional;
import static org.junit.Assert.*;
/**
 * @author
 * @date 2018/10/10
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class StudentMapperTest {
 
  @Autowired
  private StudentMapper studentMapper;
 
  @Test
  public void findByName() throws Exception {
    System.out.println(studentMapper.findByName("zhangsan"));
  }
 
  @Test
  public void findAll() throws Exception {
    System.out.println(studentMapper.findByName("zhangsan"));
  }
 
  @Test
  public void insert() throws Exception {
    System.out.println(  studentMapper.insert("zhangsan", 20));
  }
 
  @Test
  public void update() throws Exception {
  }
 
  @Test
  public void delete() throws Exception {
  }
 
  @Test
  public void insertByUser() throws Exception {
  }
 
  @Test
  public void insertByMap() throws Exception {
  }
}

大家可以自己编写测试类进行测试一下,后续会更新xml的配置方式和mybatis采用多数据源进行配置的方式

相关文章

  • Mybatis学习笔记之动态SQL揭秘

    Mybatis学习笔记之动态SQL揭秘

    这篇文章主要给大家介绍了关于Mybatis学习笔记之动态SQL的相关资料,小编觉得挺不错的,对大家学习或者使用Mybatis会有一定的帮助,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Spring打包jar包时jsp页面无法访问问题解决

    Spring打包jar包时jsp页面无法访问问题解决

    这篇文章主要介绍了Spring打包jar包时jsp页面无法访问问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 解决idea 项目编译后没有class文件的问题

    解决idea 项目编译后没有class文件的问题

    这篇文章主要介绍了解决idea 项目编译后没有class文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 聊聊Redis二进制数组Bitmap

    聊聊Redis二进制数组Bitmap

    这篇文章主要介绍了Redis二进制数组Bitmap,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • spring aop两种配置方式

    spring aop两种配置方式

    这篇文章主要为大家详细介绍了spring aop两种配置方式,主要是注解配置AOP和xml配置aop,需要的朋友可以参考下
    2015-09-09
  • Mybatis映射文件规则实例详解

    Mybatis映射文件规则实例详解

    在映射文件当中,mapper元素是映射文件的根元素,其他的标签都是它的子元素,下面这篇文章主要给大家介绍了关于Mybatis映射文件规则的相关资料,需要的朋友可以参考下
    2022-04-04
  • 搭建Springboot框架并添加JPA和Gradle组件的方法

    搭建Springboot框架并添加JPA和Gradle组件的方法

    这篇文章主要介绍了搭建Springboot框架并添加JPA和Gradle组件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Java编程实现swing圆形按钮实例代码

    Java编程实现swing圆形按钮实例代码

    这篇文章主要介绍了Java编程实现swing圆形按钮实例代码,涉及两个简单的Java实现按钮的代码,其中一个具有侦测点击事件的简单功能,具有一定借鉴价值,需要的朋友可以参考。
    2017-11-11
  • 使用javaMail实现发送邮件

    使用javaMail实现发送邮件

    这篇文章主要为大家详细介绍了使用javaMail实现发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java实现的自定义迭代器功能示例

    Java实现的自定义迭代器功能示例

    这篇文章主要介绍了Java实现的自定义迭代器功能,结合具体实例形式分析了java简单迭代器的实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-04-04

最新评论