SpringBoot整合Mybatis和SpringData JPA

SpringBoot整合MyBatis

1. 新建项目

使用IDEA和STS均可新建一个SpringBoot项目

2. 导入相关依赖

导入mysql驱动包和MMyBatis-Spring-Boot-Starter

<dependency>
   <groupId>mysqlgroupId>
     <artifactId>mysql-connector-javaartifactId>
 dependency>
 
 <dependency>
     <groupId>org.mybatis.spring.bootgroupId>
     <artifactId>mybatis-spring-boot-starterartifactId>
     <version>1.3.2version>
 dependency>

3. 新建数据库表

CREATE TABLE user(
	id INTEGER PRIMARY KEY,
	name varchar(20),
	score INTEGER
)

4. 创建实体类

public class User {
    private Integer id;
    private String name;
    private Integer score;
    //getters/setters
}

5. 创建Mapper以及映射文件

public interface UserMapper {
    void insertUser(User user);
    
    List<User> getUsers();
    
}

userMapper.xml



<mapper namespace="com.sanfeng.springbootmybatisjpa.mapper.UserMapper">

    <insert id="insertUser" parameterType="com.sanfeng.springbootmybatisjpa.beans.User">
        insert into user values(#{id}, #{name}, #{score})
    insert>
    <select id="getUsers" resultType="com.sanfeng.springbootmybatisjpa.beans.User">
        select * from user
    select>

mapper>

6. application.yml添加相关配置

# 配置数据源
# 配置数据源
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456

# 指定mapper文件的位置
mybatis:
  mapper-locations: classpath:mapper/*.xml # mapper文件的位置
  # config-location: classpath:mybatis-config.xml # mybatis核心配置文件的位置

7. 将Mapper添加到Spring容器中

在启动类中添加对mapper包扫描@MapperScan


@SpringBootApplication
@MapperScan("com.sanfeng.springbootmybatisjpa.mapper")
public class SpringbootMybatisJpaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisJpaApplication.class, args);
    }

}

或者直接在Mapper类上面添加注解@Mapper,建议使用上面那种,不然每个mapper加个注解也挺麻烦的

8. 测试

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

    @Autowired
    private UserMapper userMapper;
    @Test
    public void contextLoads() {
        userMapper.insertUser(new User(3, "ab", 100));
        userMapper.insertUser(new User(4, "cd", 100));
        System.out.println(userMapper.getUsers());

    }

}

9. 结果

在这里插入图片描述
在这里插入图片描述

SpringBoot整合SpringData JPA

JPA是什么

首先了解JPA是什么?
JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。

JPA 所维护的核心是实体( Entity Bean ),而它是通过一个持久化上下文( Persistence Context )来使用的 。持久化上下文包含 以下 3 个部分 :
• 对象关系映射( Obj ect Relational Mapping,简称 ORM , 或 0反M,或 O/R 映射 )描述, JPA
支持注解或 XML 两种形式的描述,在 Spring Boot 中主要通过注解实现 :
• 实体操作 API ,通过这节规范可以实现对实体对象的 CRUD 操作,来完成对象的持久化和
查询:
• 查询语言,约定了面向对象的查询语言 JPQL CJava Persistence Query Language ),通过这层
关系可 以实现 比较灵活的查询 。

注意:JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以叫他们为JPA的实现产品。

spring data jpa
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!

新建数据表

CREATE TABLE student(
	id INTEGER PRIMARY KEY,
	last_name varchar(20),
	email varchar(20)
)

定义实体类

@Entity // 告诉jpa,这是一个实体类(和数据表映射的类)
@Table(name = "student") // 指定和那个数据表对应,如果省略默认表名为student
public class Student {
    @Id //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer id;

    @Column(name = "last_name", length = 50) //这是和数据表对应的一个列
    private String lastName;
    @Column //省略默认列名就是属性名
    private String email;

    public Integer getId() {
        return id;
    }

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

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

编写一个Dao接口来操作实体类对应的数据表(Repository)

public interface UserRepository extends JpaRepository<User, Integer> {
}

测试及结果

@Autowired
private UserRepository userRepository;

@Test
public void testRepository() {
    Student s = userRepository.save(new Student("name1", "[email protected]"));
    System.out.println(s);
    userRepository.save(new Student("name2", "[email protected]"));

    System.out.println(userRepository.findById(1).get());

}

SpringBoot整合Mybatis和SpringData JPA_第1张图片
在这里插入图片描述

你可能感兴趣的:(Java,Spring)