「MyBatis」对象存数据库 (mybatis保存对象到数据库)
MyBatis是一种流行的Java持久化框架,它通过提供简单的XML或注解配置方式,使得开发者能够将Java程序中的对象存储到数据库中。在本文中,我们将深入探讨如何使用MyBatis将Java对象存储到数据库中。
一. MyBatis简介
MyBatis是一种开源持久化框架,它使得Java开发者能够轻易地将Java对象存储到数据库中。MyBatis有一套灵活的映射机制,能够通过简单的XML或注解配置方式,将Java对象与数据库表格之间进行映射。
MyBatis的架构中包含了以下核心组件:
1. SqlSession:这是执行SQL语句的主要接口,通常是开发者与MyBatis交互的主要对象。
2. Configuration:这个组件用来解析XML或注解配置文件,并构建出框架需要的组件。
3. Executor:这个组件在SqlSession中被使用,用来执行SQL语句,并将结果映射到Java对象中。
4. Mapper:这个组件是开发者在配置文件中定义的接口,它提供了一套API来访问数据库。
二. 为什么选择MyBatis
MyBatis是持久化框架的一个选择,但为什么要选择MyBatis呢?这是因为它具有以下优点:
1. MyBatis配置简单:MyBatis可以使用简单的XML或注解进行配置,这使得开发人员能够轻松地完成启动和配置工作。
2. MyBatis性能强大:MyBatis使用了高效的SQL执行引擎和映射机制,为开发者提供了高效的数据库访问性能。
3. MyBatis易于维护:MyBatis的配置文件易于管理,可以轻松解决针对不同数据库的复杂性。
三. MyBatis对象映射
在MyBatis中,Java对象与数据库表格的映射是通过配置文件来实现的。当MyBatis被启动后,它会读取配置文件中定义的相关信息,并自动映射Java对象与数据库表格之间的关系。这些配置数据可以包含在XML文件或Java注解中。
1. 通过XML文件定义映射
MyBatis XML映射文件包含了Java类和数据库表之间的关系。下面是一段XML映射文件的示例:
SELECT *
FROM user
WHERE id = #{id}
INSERT INTO user (name, age, gender)
VALUES (#{name}, #{age}, #{gender})
UPDATE user
SET name = #{name},
age = #{age},
gender = #{gender}
WHERE id = #{id}
DELETE FROM user
WHERE id = #{id}
这个XML文件定义了一个名为UserDao的Mapper,并定义了一个名为selectUserById的查询语句。此外还定义了一些名为insertUser、updateUser和deleteUserById的增删改语句,它们分别用来向数据库添加用户、更新用户和删除用户。
2. 通过Java注解定义映射
除了XML文件外,MyBatis还支持使用Java注解的方式来定义映射。下面是一个使用注解来定义映射的示例:
public interface UserDao {
@Select(“SELECT * FROM user WHERE id = #{id}”)
User selectUserById(@Param(“id”) Long id);
@Insert(“INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})”)
void insertUser(User user);
@Update(“UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id}”)
void updateUser(User user);
@Delete(“DELETE FROM user WHERE id = #{id}”)
void deleteUserById(@Param(“id”) Long id);
}
这段代码在接口UserDao中为Java方法添加了辅助注解。这些注解提供了一种简单、快速的方式来定义数据库操作。例如,@Select注解定义了一个SELECT语句,而@Insert、@Update和@Delete注解分别定义了增、删、改操作。
四. MyBatis对象映射配置实战
现在我们已经了解了MyBatis是如何定义对象映射的,接下来将介绍如何使用MyBatis将Java对象存储到数据库中。
1. 添加依赖
在项目中使用MyBatis时,需要使用以下依赖:
org.mybatis
mybatis
3.5.7
mysql
mysql-connector-java
8.0.26
注意:这里使用的是MySQL数据库和对应的驱动包。
2. 配置文件
在项目的resources文件夹中,需要添加一个名为mybatis-config.xml的配置文件,这个文件定义了MyBatis的配置信息。
这个配置文件中定义了数据源和事务管理器。其中数据源是使用的是MyBatis内置的数据源,并指定了MySQL数据库的连接信息。还定义了mappers组件,用来映射Java对象与数据库表之间的关系。这里将使用一个名为UserDao.xml的XML文件来进行定义。
3. 定义实体类
这是Java中定义的用户实体类:
public class User {
private Long id;
private String name;
private Integer age;
private String gender;
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;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
4. 定义Mapper
这里定义一个名为UserDao的Mapper接口,它用来映射Java对象与数据库表之间的关系。
select
id, name, age, gender
from
user
where id = #{id}
insert into user (name, age, gender) values (#{name}, #{age}, #{gender})
这个XML文件定义了一个名为UserDao的Mapper,并定义了一个名为selectUserById的查询语句,和一个名为insertUser的插入语句。
5. 实现代码
下面是实现代码:
@Test
public void testInsert() throws SQLException {
String resource = “mybatis-config.xml”;
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
User user = new User();
user.setName(“zhangsan”);
user.setAge(18);
user.setGender(“male”);
userDao.insertUser(user);
sqlSession.commit();
sqlSession.close();
}
6. 运行测试
运行测试,可以看到在数据库中插入了一条数据。
MyBatis是一种非常好用的Java持久化框架,可以将Java对象映射到数据库表格中。配置简单、性能强劲、易于维护是 MyBatis 的优点之一,使用 MyBatis 进行持久化,将会给开发者们带来强大的便利。