2021-04-14

mybatis实现mapper配置并查询数据

什么是mapper

建Maven项目名为“mybatis-mapper“,设置好Maven版本、配置文件以及Maven仓库

1、准备数据源
因为MyBatis是一个持久层框架,所以我们在使用之前需要执行如下SQL语句备好数据源
drop database if exists mybatis_demo;
create database mybatis_demo;
use mybatis_demo;
create table user (
id int auto_increment primary key,
username varchar(20),
age int,
score int
);
insert into user (id, username, age, score) values
(1,‘peter’, 18, 100), (2,‘pedro’, 24, 200),
(3,‘jerry’, 28, 500), (4,‘mike’, 12, 300),
(5,‘tom’, 27, 1000);

注解方式用mapper

使用MyBatis首先需要导入MySQL驱动包、MyBatis框架基础包并且添加MyBatis核心配置文件

在mybatis-config.xml配置文件中添加上对应的mapper配置

新建mapper包,并在其下新建UserMapper.java类
User模块Mapper层:UserMapper.java
package mapper;

public interface UserMapper {
/**
* 通过用户id查询用户名称
*
* @param id 用户id
* @return 用户名称
*/
String selectUsernameById(Integer id);
}
@Select(“SELECT username FROM user WHERE id = #{id}”)
(有了方法定义后,我们再通过注解为该方法添加上对应的SQL语句)

User模块测试类:UserTest.java
@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();
}
}

XML方式使用mapper

在 UserMapper 接口中,我们再新增一个方法selectUserAgeById,该方法的作用是通过用户id查询用户年龄

User模块Mapper层:UserMapper.java
/**

  • 通过用户id查询用户年龄
  • @param id 用户id
  • @return 用户年龄
    */
    Integer selectUserAgeById(Integer id);

使用XML的方式添加SQL语句,首先在资源文件夹下新建mapper包,并在其下新建名为UserMapper的XML文件
User模块Mapper层配置文件:UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>

namespace命名空间是每一个mapper的唯一标识,也是XML文件和Java接口类连接的标识
有了XML文件后,我们使用标签给查询年龄的方法添加上对应的SQL语句

SELECT age FROM user WHERE id = #{id}

select 标签中有两个必填属性:

id:对应接口的方法名,即 selectUserAgeById,通过它 MyBatis 才能将二者对应起来
resultType:对应 SQL 语句的返回类型,与接口方法的返回值相同,有时会用到resultMap
测试类添加代码调用XML的SQL

User模块测试类:UserTest.java

2
3
// 调用XML的SQL
Integer age = mapper.selectUserAgeById(1);
System.out.println("age: " + age);

select-resultType

UserMapper.xml文件中,我们新增 selectUserById 标签,该 select 标签的作用是:通过id查询用户

SELECT * FROM user WHERE id = #{id}

在entity包下创建User实体类:User.java
package entity;

public class User {
private Integer id;
private String username;
private Integer age;
private Integer score;
// 省略getter&setter方法
// 省略toString方法
}
把UserMapper.xml文件中selectUserById标签的返回类型改为上面创建的实体类

1
resultType=“entity.User”

User模块Mapper层:UserMapper.java

/**

  • 通过用户id查询用户信息
  • @param id
  • @return
    */
    User selectUserById(Integer id);
    User模块测试类:UserTest.java

// 调用通过用户id查询用户信息的方法
User user = mapper.selectUserById(1);
System.out.println(user);

select-resultMap

User模块Mapper层配置文件:UserMapper.xml





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值