MyBatis使用Mapper配置查询数据

 

Mapper是什么?
SQL语句都写在Mapper配置文件中,Mappers 标签就是用来配置需要加载的 SQL 映射配置文件路径的。Mappers标签下有许多mapper标签,每一个 mapper 标签中配置的都是一个独立的映射配置文件的路径。

 

注解方式用Mapper
之前MyBatis的工程搭建项目的基础下mybatis-config.xml里面加Mappers标签。

 

1、配置如下:
<!-- mapper配置 -->
<mappers>
<mapper class="mapper.UserMapper"/>
</mappers>
1
2
3
4

 


2、新建UserMapper.java

 


代码如下:
public interface UserMapper {
@Select("SELECT username FROM user WHERE id = #{id}")//通过注解方式添加对应的SQL语句
/**
* 通过用户id查询用户名称
*
* @param id 用户id
* @return 用户名称
*/
String selectUsernameById(Integer id);
}
1
2
3
4
5
6
7
8
9
10
11
3、UserTest类
@SuppressWarnings({"Duplicates"})
public class UserTest {
public static void main(String[] args) throws IOException, SQLException {
// 读取配置文件
InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
// 得到 SqlSessionFactory 核心类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 开始一个 sql 会话
SqlSession session = sqlSessionFactory.openSession();
// 得到 mapper
UserMapper mapper = session.getMapper(UserMapper.class);
// 调用注解的SQL
String username = mapper.selectUsernameById(1);
System.out.println("username: " + username);
// 关闭会话
session.close();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
4、运行
结果如图:

 


XML使用Mapper
代码
1、在UserMapper.java里加
/**
* 通过用户id查询用户年龄
* @param id 用户id
* @return 用户年龄
*/
Integer selectUserAgeById(Integer id);
1
2
3
4
5
6

 


2、在mapper包下新建UserMapper.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="mapper.UserMapper">
</mapper>
1
2
3
4
使用< select ></ select>标签给查询年龄的方法添加上对应的SQL语句

 

<select id="selectUserAgeById" resultType="java.lang.Integer">
SELECT age FROM user WHERE id = #{id}
</select>
1
2
3

 


3、UserTest.java添加代码

 


4、运行
结果如图:

 


select-resultType
代码
1、在UserMapper.xml文件
添加如下

 

<select id="selectUserById" resultMap="">
SELECT * FROM user WHERE id = #{id}
</select>
1
2
3
2、新加User

 


3、User实体类:User.java
package entity;

 

public class User {
private Integer id;
private String username;
private Integer age;
private Integer score;
// getter&setter方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;}

 

// toString方法
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
UserMapper.xml文件中selectUserById标签的返回类型改为上面创建的实体类

 

resultType="entity.User“
1
4、UserMapper
/**
* 通过用户id查询用户信息
*
* @param id
* @return
*/
User selectUserById(Integer id);
1
2
3
4
5
6
7
5、运行
UserTest

 

结果

 


select-resultMap
代码
1、填写UserMapper文件

 

2、< select id=“selectUserById” resultMap=“userMap”>
把UserMapper.xml文件中selectUserById标签的返回类型改为上面创建的resultMap

 


2、运行
根跟之前一样

 

 

posted @ 2021-04-14 21:18  熊霸  阅读(391)  评论(0)    收藏  举报