当前位置: 首页 > news >正文

Mybatis Mapper 代理开发

文章目录

    • 1, 实体类
    • 2、将Mapper接口写好
    • 3、UserMapper.xml 配置文件
    • 4、mybatis-config.xml 配置文件
    • 5、编写代码

Mybatis Mapper 代理开发
总的来说,有这几点:

  1. 定义域SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件位置在同一目录下
  2. 设置SQL映射文件的namespace属性为Mapper接口的位置
  3. 在Mapper接口中定义方法,方法明就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
  4. 编码
    (1) 通过SqlSession的getMapper方法获取Mapper接口的代理对象
    (2)调用对应方法完成sql的执行

1, 实体类

先写一个User实体类

package com.itheima.pojo;import java.awt.print.Printable;/*** ClassName: User* Packge: com.itheima.pojo* Description:** @Author: aex* @Create 2024/9/24 15:51* @Version 1.0*/
public class User { //实体类private Integer id;private String username;private String password;private String gender;private String addr;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 String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", gender='" + gender + '\'' +", addr='" + addr + '\'' +'}';}
}

2、将Mapper接口写好

等下我们的结果会返回到这个列表中,调用selectAll()方法,这里的方法和UserMapper.xml 配置文件中的id是一样的。

package com.itheima.pojo.mapper;import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** ClassName: UserMapper* Packge: com.itheima.pojo.mapper* Description:** @Author: aex* @Create 2024/9/24 16:46* @Version 1.0*/
@Mapper
public interface UserMapper {List<User> selectAll(); //这里的方法和id 是一样的 ,要注意我们返回的是一个集合
}

3、UserMapper.xml 配置文件

这里的namespace是命名空间,也就是这个UserMapper.xml 配置文件的位置,然后id是这句sql的唯一标识,resultType 是实体类的位置。这个配置文件是sql映射文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.ac.cn//DTD Mapper 3.0//EN""http://mybatis.ac.cn/dtd/mybatis-3-mapper.dtd">
<!--namespace: 命名空间 id 是这句sql的唯一标识,然后这里增删改查都可以  resultType 这个是类的位置,也就是需要包装的类
-->
<mapper namespace="com.itheima.pojo.mapper.UserMapper"><select id="selectAll" resultType="com.itheima.pojo.User">select * from tb_user</select>
</mapper>

4、mybatis-config.xml 配置文件

上面的配置是数据库连接信息,然后下面 这个部分就是用来加载我们刚刚配置的sql映射文件,我们就把刚刚这个文件的位置写进去。就可以了。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.ac.cn//DTD Config 3.0//EN""http://mybatis.ac.cn/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--数据库连接信息--><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="p@ssw0rd"/></dataSource></environment></environments><mappers><!--加载sql映射文件--><mapper resource="com/itheima/mapper/UserMapper.xml"/></mappers>
</configuration>

5、编写代码

调用Mapper类中的方法。List<User> users = mapper.selectAll(); System.out.println(users); 然后就可以将代理的sql查询出来。

package com.itheima.pojo;import com.itheima.pojo.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** ClassName: MyBatisDemo2* Packge: com.itheima.pojo* Description:** @Author: aex* @Create 2024/9/24 16:55* @Version 1.0*/// Mybatis 代理开发
public class MyBatisDemo2 {public static void main(String[] args) throws IOException {//1. 加载mybatis的核心配置文件,获取 SqlSessionFactoryString resource = "mybatis-config.xml"; //定义配置文件路径InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession 对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession(); // 调用openSession() 方法返回 sqlSession对象//3.执行sql
//        List<User> users = sqlSession.selectList("test.selectAll"); //因为是查询所以所以是 selectList, 会返回一个列表
//        System.out.println(users);//3.1 获取UserMapper 接口的代理对象UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 调用 getMapper()方法 将UserMapper这个类传进去List<User> users = mapper.selectAll();System.out.println(users);sqlSession.close();}
}

在这里插入图片描述


http://www.mrgr.cn/news/35758.html

相关文章:

  • 测试面试题:测试计划方案应该包含哪些内容?
  • connect timed out 详解及排查
  • Codeforces Beta Round 4 (Div. 2 Only) 4D. Mysterious Present (最长上升子序列变形)
  • Ubuntu环境切换到服务器某个用户后source等命令和Tab快捷补全都用不了了,提示没找到,但root用户可以
  • PCDN技术如何适应不同用户的需求和网络环境的变化?(贰)
  • OpenAI发布多语言MMMLU数据集;火山引擎发布AI视频生成大模型豆包
  • 大量数据分批次处理+concurrent.futures.ThreadPoolExecutor多线程处理文件
  • 【LeetCode每日一题】——LCP 51.烹饪料理
  • 扫雷老年版2.0无猜模式
  • postman下载安装和导入导出脚本一键执行
  • 代码随想录算法训练营第29天|134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列
  • 【机器学习】过拟合与欠拟合——如何优化模型性能
  • 【活动】人工智能时代,程序员如何保持核心竞争力?需要掌握哪些技能?
  • 在多态的方法调用中为什么会出现“左边编译左边运行”的现象?多态创建的对象到底是谁属于父类还是子类?通过深扒集合remove方法调用理解其原理
  • CAPL—on signal到底该怎么玩?
  • 消息队列与Kafka集群
  • 海信智能电视的使用心得
  • 旺店通ERP集成金蝶KIS(金蝶KIS主供应链)
  • CSS 实现文本溢出省略号显示,含单行与多行文本溢出
  • ComfyUI - 使用 ComfyUI 部署与测试 FLUX.1 图像生成模型 教程