简述使用Mybatis查询表数据并映射到一个Java对象时,项目中应创建哪些文件,每个文件分别起到什么作用?
时间: 2024-03-19 12:41:01 浏览: 19
使用 MyBatis 查询表数据并映射到 Java 对象时,一般需要创建以下文件:
1. Mapper XML 文件:该文件用于定义 SQL 语句和映射规则。XML 文件中包括了 SQL 语句、参数映射、结果集映射等信息,通过解析 XML 文件来执行 SQL 语句和映射结果集。
2. Mapper 接口文件:该文件用于定义 Mapper XML 文件中 SQL 语句的方法化接口,提供给业务代码调用。
3. Java 实体类文件:该文件用于定义与数据库表结构对应的实体类,即将表中每个字段映射成实体类中的一个属性。
这些文件分别起到以下作用:
1. Mapper XML 文件:定义 SQL 语句和映射规则,实现数据访问逻辑。
2. Mapper 接口文件:定义 Mapper XML 文件中 SQL 语句的方法化接口,提供给业务代码调用,使得业务代码与数据访问逻辑解耦。
3. Java 实体类文件:将表中每个字段映射成实体类中的一个属性,使得业务代码操作数据时更加简便易懂。
需要注意的是,这些文件的命名和路径需要按照一定的约定,以便 MyBatis 能够正确地加载和使用它们。例如,Mapper XML 文件和 Mapper 接口文件的名称应该相同,并且位于同一个包下。Java 实体类文件的类名应该与表名一致,属性名应该与表字段一致。
相关问题
帮我写个java dao到MyBatis映射映射的代码查询条件是一个int类型的参数
好的,以下是一个简单的Java DAO到MyBatis映射的代码,查询条件是一个int类型的参数:
Java DAO 接口:
```java
public interface UserDAO {
List<User> getUsersByType(int type);
}
```
MyBatis 映射文件 UserMapper.xml:
```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.dao.UserDAO">
<select id="getUsersByType" resultType="com.example.model.User">
SELECT * FROM users WHERE type = #{type}
</select>
</mapper>
```
其中,`#{type}`表示从Java DAO传入的参数,MyBatis会将其替换为实际的值。
这个例子中,我们假设有一个User类,对应数据库中的users表。你需要根据你自己的实际情况,修改User类的属性和UserMapper.xml文件中的查询语句。
:在MySQL中创建表1.1所示的商品数据表goods,在Eclipse中创建一个MyBatis项目,查询出全部商品。
好的,下面是在 MySQL 中创建商品数据表的 SQL:
```sql
CREATE TABLE goods (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
description TEXT,
created_time DATETIME NOT NULL,
updated_time DATETIME NOT NULL
);
```
在 Eclipse 中创建 MyBatis 项目,可以参考以下步骤:
1. 创建一个新的 Java 项目。
2. 添加 MyBatis 依赖。在 pom.xml 文件中添加以下依赖:
```xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
```
3. 配置 MyBatis。在 src/main/resources 目录下创建 mybatis-config.xml 文件,并添加以下内容:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.example.mybatisdemo.entity.Goods" alias="Goods"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/GoodsMapper.xml"/>
</mappers>
</configuration>
```
其中,typeAliases 部分配置了实体类别名,environments 部分配置了数据库连接信息,mappers 部分配置了映射文件路径。
4. 创建实体类。在 src/main/java 目录下创建 com.example.mybatisdemo.entity 包,并创建 Goods 实体类:
```java
package com.example.mybatisdemo.entity;
import java.math.BigDecimal;
import java.util.Date;
public class Goods {
private Long id;
private String name;
private BigDecimal price;
private Integer stock;
private String description;
private Date createdTime;
private Date updatedTime;
// getter 和 setter 省略
}
```
5. 创建映射文件。在 src/main/resources/mapper 目录下创建 GoodsMapper.xml 文件,并添加以下内容:
```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.mybatisdemo.mapper.GoodsMapper">
<select id="findAll" resultType="Goods">
SELECT id, name, price, stock, description, created_time, updated_time
FROM goods
</select>
</mapper>
```
其中,namespace 部分配置了 Mapper 接口路径,select 部分配置了查询所有商品的 SQL。
6. 创建 Mapper 接口。在 src/main/java 目录下创建 com.example.mybatisdemo.mapper 包,并创建 GoodsMapper 接口:
```java
package com.example.mybatisdemo.mapper;
import com.example.mybatisdemo.entity.Goods;
import java.util.List;
public interface GoodsMapper {
List<Goods> findAll();
}
```
其中,findAll 方法是映射文件中定义的 SQL。
7. 编写测试代码。在 src/test/java 目录下创建 com.example.mybatisdemo 包,创建 Test 类:
```java
package com.example.mybatisdemo;
import com.example.mybatisdemo.entity.Goods;
import com.example.mybatisdemo.mapper.GoodsMapper;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class Test {
private static SqlSessionFactory sqlSessionFactory;
static {
String resource = "mybatis-config.xml";
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Test.class.getClassLoader().getResourceAsStream(resource));
}
@Test
public void testFindAll() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
GoodsMapper goodsMapper = sqlSession.getMapper(GoodsMapper.class);
List<Goods> goodsList = goodsMapper.findAll();
System.out.println(goodsList);
}
}
}
```
具体来说,这段代码会读取 MyBatis 的配置文件,创建 SqlSessionFactory 对象,并通过 SqlSession 对象执行查询所有商品的 SQL。
运行测试代码后,将会输出数据库中的全部商品信息。