Java中Springboot工程使用Jpa或者Mybatis,彻底搞懂Entity、Dao、Dto、Mapper

使用JPA

一、概念

Entity:表示数据库中的表,映射到Java类。

DAO:用于封装对数据库的访问逻辑。

DTO:用于在层之间传输数据。

二、关联

Entity类直接与数据库表映射,是持久化类,通常用JPA注解标识。一个Entity类对应数据库中的一张表。

DAO接口或类包含CRUD操作,用于操作Entity对象,与数据库交互。

DTO类是数据传输对象,用于将数据在不同层(例如,服务层和控制层)之间传递,通常不包含业务逻辑,仅包含数据。一般用于前后端分离架构,封装返回给前端数据格式,也减少网络的数据传输。

Entity类如何书写

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;
    private String password;

    // Getters and Setters
}

DAO接口如何书写

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    User findByUsername(String username);
}

DTO类如何书写

public class UserDTO {
    private Long id;
    private String username;

    // Getters and Setters
}

服务层使用DAO和DTO

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public UserDTO getUserByUsername(String username) {
        User user = userRepository.findByUsername(username);
        UserDTO userDTO = new UserDTO();
        userDTO.setId(user.getId());
        userDTO.setUsername(user.getUsername());
        return userDTO;
    }
}

使用Mybatis

一、概念

1. Entity:同样是与数据库表映射的Java类。
2. DAO:对应的是MyBatis的Mapper接口,定义SQL映射。
3. DTO:用于在层之间传输数据,和JPA中相同。

Entity类如何书写

public class User {
    private Long id;
    private String username;
    private String password;

    // Getters and Setters
}

Mapper接口(DAO)如何书写

import org.apache.ibatis.annotations.*;

public interface UserMapper {
    @Select("SELECT * FROM users WHERE username = #{username}")
    User findByUsername(@Param("username") String username);

    @Insert("INSERT INTO users(username, password) VALUES(#{username}, #{password})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertUser(User user);
}

Mapper 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="com.example.mapper.UserMapper">

    <select id="findByUsername" parameterType="String" resultType="com.example.entity.User">
        SELECT * FROM users WHERE username = #{username}
    </select>

    <insert id="insertUser" parameterType="com.example.entity.User">
        INSERT INTO users(username, password) VALUES(#{username}, #{password})
        <selectKey keyProperty="id" resultType="Long" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
    </insert>

</mapper>

DTO类如何书写

public class UserDTO {
    private Long id;
    private String username;

    // Getters and Setters
}

服务层使用Mapper和DTO

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public UserDTO getUserByUsername(String username) {
        User user = userMapper.findByUsername(username);
        UserDTO userDTO = new UserDTO();
        userDTO.setId(user.getId());
        userDTO.setUsername(user.getUsername());
        return userDTO;
    }
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于构建Java应用程序的开发框架,它简化了Spring应用的开发过程并提供了更高效的开发体验。JPAJava Persistence API)是Java持久化的标准化接口,用于操作数据库的ORM框架。MyBatis Plus是一个轻量级的ORM框架,它简化了基于MyBatis的开发过程并提供了更多的功能扩展。 在Spring Boot同时集成JPAMyBatis Plus是完全可行的。这样做的好处是可以根据实际需求选择不同的持久化方式。对于简单的增删改查操作,使用JPA可以更快速地完成,而对于复杂的SQL查询和数据库操作,使用MyBatis Plus可以更加灵活地进行处理。 要实现同时集成JPAMyBatis Plus,首先需要在项目的pom.xml引入对应的依赖。对于JPA,可以添加Spring Data JPA的依赖;对于MyBatis Plus,可以添加MyBatis Plus的依赖。 接下来,需要配置数据源和相关的数据库连接信息。可以使用Spring Boot提供的自动配置机制来简化这个过程。通过在application.properties或application.yml文件配置相应的属性,比如数据库的URL、用户名和密码,Spring Boot会自动根据配置来初始化和配置数据源。 然后,可以定义实体类和对应的数据访问接口(Repository)。对于JPA,可以使用@Entity注解来标识实体类,并通过继承JpaRepository接口来定义和实现CRUD操作。对于MyBatis Plus,可以使用@Table注解来标识实体类,并通过继承BaseMapper接口来定义和实现数据库操作。 最后,在Service或Controller层,可以根据具体需求来使用JPAMyBatis Plus进行数据处理。对于JPA,可以通过自动注入对应的Repository来调用相关方法;对于MyBatis Plus,可以通过自动注入对应的Mapper来调用相关方法。 通过同时集成JPAMyBatis Plus,可以在Spring Boot项目灵活选择使用不同的持久化方式,以满足不同业务场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值