首页 > 数据库 >JAVA数据库

JAVA数据库

时间:2024-08-17 17:40:03浏览次数:7  
标签:JAVA name 数据库 email String user id User

基础概念

ORM 框架

  • ORM 框架是一种技术,用于在面向对象的编程语言(如 Java)和关系型数据库之间建立映射关系。
  • ORM 框架允许开发者使用面向对象的方式操作数据库,而不需要直接编写 SQL 语句。

JPA

  • JPA 是一种 Java 持久化 API 规范,定义了一套标准的 Java 持久化 API。
  • JPA 规范为 ORM 框架提供了统一的接口和抽象层,使得开发者可以在不同的 ORM 框架之间轻松切换。

JPA 的提出主要是为了整合市面上已有的 ORM 框架,比如说 Hibernate、EclipseLink 等。官方觉得你们搞框架可以,但不要乱搞,得按照我的标准来。

常见框架

JDBC

JDBC (Java Database Connectivity) 是 Java 编程语言中用于访问和操作数据库的标准 API。它提供了一组 Java 类和接口,使得 Java 程序可以以统一的方式连接、查询和更新各种关系型数据库。

// 1. 加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");

// 2. 获取数据库连接
Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test", "username", "password");

// 3. 创建 Statement 对象
Statement stmt = conn.createStatement();

// 4. 执行 SQL 语句并获取结果集
ResultSet rs = stmt.executeQuery("SELECT * FROM users");

// 5. 处理结果集
while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("ID: " + id + ", Name: " + name);
}

// 6. 关闭资源
rs.close();
stmt.close();
conn.close();

MyBatis

  • MyBatis 是一个持久层框架,建立在JDBC之上,用于简化数据库操作。
  • MyBatis 通过XML或注解的方式配置SQL语句和结果映射,大幅减少了JDBC样板代码的编写。
  • MyBatis 提供了灵活的SQL语句编写和结果集映射功能,适合对性能要求较高的场景。
    首先,我们定义 User 实体类:
public class User {
    private int id;
    private String name;
    private String email;
    
    // getters and setters
}

然后,我们创建一个 UserMapper 接口,定义操作数据库的方法:

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(int id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}

接下来,我们在 resources/mapper/UserMapper.xml 文件中定义 SQL 语句:

<?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.demo.mapper.UserMapper">
    <select id="getAllUsers" resultType="com.example.demo.entity.User">
        SELECT * FROM user
    </select>
    
    <select id="getUserById" parameterType="int" resultType="com.example.demo.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    
    <insert id="insertUser" parameterType="com.example.demo.entity.User">
        INSERT INTO user (name, email) VALUES (#{name}, #{email})
    </insert>
    
    <update id="updateUser" parameterType="com.example.demo.entity.User">
        UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>
    
    <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

最后,我们在应用程序中使用 MyBatis 执行 CRUD 操作:

// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
        .build(Resources.getResourceAsStream("mybatis-config.xml"));

// 获取 SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
    UserMapper mapper = session.getMapper(UserMapper.class);
    
    // 查询所有用户
    List<User> users = mapper.getAllUsers();
    
    // 根据 ID 查询用户
    User user = mapper.getUserById(1);
    
    // 插入用户
    User newUser = new User("John Doe", "[email protected]");
    mapper.insertUser(newUser);
    session.commit();
    
    // 更新用户
    user.setName("Jane Doe");
    mapper.updateUser(user);
    session.commit();
    
    // 删除用户
    mapper.deleteUser(user.getId());
    session.commit();
}

这就是 MyBatis 的基本使用方式。MyBatis 提供了更多高级特性,如动态 SQL、分页、缓存等,可以根据实际需求进一步探索。

Spring Data JPA

Spring Data JPA 是 Spring 提出的,它增加了一个抽象层,用来屏蔽不同 ORM 的框架差异。通常Spring Data JPA 底层的 ORM 框架是 Hibernate。
我们定义 User 实体类:

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

    @Column(nullable = false)
    private String name;

    @Column(nullable = false, unique = true)
    private String email;

    // Getters, setters, and constructors
}

在Spring Data JPA中,只需要编写这样的接口就可实现数据访问。不再像我们以往编写了接口时候还需要自己编写接口实现类,直接减少了我们的文件清单。

同时Spring-data-jpa还有一大特性就是通过解析方法名创建查询。

接下来,我们创建一个 UserRepository 接口,该接口继承自 JpaRepository 接口:

public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
}

在上例中,我们可以看到函数:

  • findByEmail(String email);

实现了按email查询User实体.现在,我们可以在应用程序中使用 UserRepository 执行 CRUD 操作:

@SpringBootApplication
public class DemoApplication {

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

    @Autowired
    private UserRepository userRepository;

    @PostConstruct
    public void init() {
        // Create a new user
        User user = new User("John Doe", "[email protected]");
        userRepository.save(user);

        // Find a user by email
        Optional<User> optionalUser = userRepository.findByEmail("[email protected]");
        optionalUser.ifPresent(System.out::println);

        // Update the user
        user.setName("Jane Doe");
        userRepository.save(user);

        // Delete the user
        userRepository.delete(user);
    }
}

参考链接

https://javabetter.cn/springboot/jpa.html#spring-boot-整合-spring-data-jpa

标签:JAVA,name,数据库,email,String,user,id,User
From: https://www.cnblogs.com/Ho1dF0rward/p/18364683

相关文章

  • 【免费】ssm驾校预约管理系统jsp|毕业设计|Javaweb项目
    收藏点赞不迷路 关注作者有好处编号:ssm560ssm驾校预约管理系统jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven1.系统展示2.万字文档展示第5章系统详细设计系统实现这个章节的内容主要还是展示系统的功能界面设计......
  • 【免费】ssm公交车信息管理系统|毕业设计|Javaweb项目
    收藏点赞不迷路 关注作者有好处编号:ssm572ssm公交车信息管理系统开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven 1.系统展示2.万字文档展示第5章系统详细设计3.5.1个人中心通过设计的个人中心功能模块,用户可以......
  • 【免费】ssm基于JavaEE的仓库管理系统设计与开发|毕业设计|Javaweb项目
    收藏点赞不迷路 关注作者有好处编号:ssm500ssm基于JEE的仓库管理系统设计与开发开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码1.系统展示2.万字文档展示第5章系统实现编程人员在搭建的开发环境中,运用......
  • 【免费】基于SSM的蛋糕甜品店管理系统的设计与开发jsp|毕业设计|Javaweb项目
    收藏点赞不迷路 关注作者有好处编号:ssm544基于SSM的蛋糕甜品店管理系统的设计与开发jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费|领源码)1.系统展示2.万字文档展示第5章系统详细设计5.1个人中......
  • JAVA中的对象流ObjectInputStream
    ObjectInputStream是Java中用于序列化对象的一种输入流,它允许我们将对象的状态信息从输入流中读取出来,以便在后续程序中使用。本文将详细介绍ObjectInputStream的原理、使用方法以及相关代码例子。一、ObjectInputStream简介概述ObjectInputStream继承了InputStream类,主要......
  • JAVA中的ObjectOutputStream类
    ObjectOutputStream是Java中用于序列化对象的一种输出流,它可以将Java对象的状态信息转换为字节流,以便于存储或通过网络传输。序列化是将对象转换为字节流的过程,而反序列化则是将字节流恢复为对象的过程。本文将详细介绍ObjectOutputStream的原理、使用方法以及相关代码例子。......
  • Java集合提升
    1.手写ArrayList1.1.ArrayList底层原理细节底层结构是一个长度可以动态增长的数组(顺序表)transientObject[]elementData;特点:在内存中分配连续的空间,只存储数据,不存储地址信息。位置就隐含着地址。优点节省存储空间,因为分配给数据的存储单元全用于存放节点的数据(......
  • Java后端实现ppt格式转为pdf格式文件
    (1)使用场景:将从web前端上传到后端的ppt格式的文件转换为pdf格式的文件。项目框架为springboot+layui(2)实现方法:1、步骤1:导入所需jar包,如下<!--ppt转pdf--><dependency><groupId>com.aspose</groupId><artifactId>aspose-word</artifactId><version>18.10&l......
  • java毕业设计-基于springboot+vue的美食分享平台,基于springboot的厨房达人美食分享平
    文章目录前言演示视频项目背景项目架构和内容获取(文末获取)具体实现截图用户前台管理后台技术栈具体功能模块设计系统需求分析可行性分析系统测试为什么我?关于我我自己的网站项目相关文件前言博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • java批量写入数据库
    使用java.sql.DriverManager;进行数据批量写入首先下载mysql-connect连接驱动包,https://dev.mysql.com/downloads/connector/j/5.1.html将驱动包mysql-connector-j-8.2.0.jar放入项目lib下并右键选择addaslibrary。importjava.sql.Connection;importjava.sql.DriverManage......