广告
返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis实现mapper代理模式的方式
  • 953
分享到

mybatis实现mapper代理模式的方式

2024-04-02 19:04:59 953人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

今晚继续复习mybtis 以根据id值查询单条数据为例 编写sqlMapConfig.xml文件 <configuration> <!-- 使用mybatis

今晚继续复习mybtis
以根据id值查询单条数据为例
编写sqlMapConfig.xml文件


<configuration> 
<!-- 使用mybatis需要的数据源和事务配置,后续如果整合spring之后,将不再需要 --> 
<environments default="development"> 
<!-- 配置数据源和事务 --> 
<environment id="development"> 
<!-- 配置事务管理,将事务管理交给mybatis管理 --> <transactionManager type="JDBC" /> 
<!-- 配置数据源 --> 
<dataSource type="POOLED">
 <property name = "driver" value = "com.Mysql.jdbc.Driver" /> 
 <property name="url" value="jdbc:mysql://localhost:3306/db_shop? useUnicode=true&amp;characterEncoding=utf-8"/>
  <property name="username" value="root"/> <property name="passWord" value=""/>
   </dataSource>
    </environment> 
    </environments>
     <!-- 加载**.xml配置文件 --> 
     <mappers> 
     <mapper resource="product.xml"/>
</mappers> 
</configuration>

编写失血模型对象:Product,最好字段名和数据库里面的字段名一直


 
 public class Product {
  private int p_id;
   private String name; 
   private int p_number;
    private double price; 
    private String add_time;
     public Product(int p_id, String name, int p_number, double price, String add_time) { 
     super();
      this.p_id = p_id; 
      this.name = name; 
      this.p_number = p_number; 
      this.price = price; 
      this.add_time = add_time; 
      }public Product() { 
        super();
       }
       public int getP_id() { 
       return p_id; }
       public void setP_id(int p_id) { 
       this.p_id = p_id; }public String getName() { return name; }
       public void setName(String name) { this.name = name; }
       public int getP_number() { 
       return p_number; }
       public void setP_number(int p_number) { this.p_number = p_number; }
       public double getPrice() { return price; }
       public void setPrice(double price) { this.price = price; }
       public String getAdd_time() { return add_time;
}
public void setAdd_time(String add_time) { this.add_time = add_time; }
@Override 
public String toString() { 
return "Product [p_id=" + p_id + ", name=" + name + ", p_number=" + p_number + ", price=" + price + ", add_time=" + add_time + "]"; } }

编写单个映射关系的sql.xml:product.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">
 <!-- 映射的sql文件 namespace:命名空间,可以理解成将部分的sql语句进行隔离。到后面的mapper代理方式将有更 加重要的作用 --> <mapper namespace="test"> 
 <!--select:表示要执行的查询语句 id:给这个查询语句取一个名字,唯一的,java中要调用的使用。
  parameterType:输入参数的数据类型 
  resultType:输出参数的数据类型,一般绑定成model的对象 #{value}:表示用来和占位符一样,用来接受输入的参数值。 --> <select id="findById" parameterType="java.lang.Integer" resultType="com.woniuxy.model.Product">
   SELECT * FROM t_product WHERE p_id = #{value}
    </select>
     </mapper>

编写java代码进行测试执行sql语句并得到结果


 
  * public class MybatisDemo1 {
  *  public static void main(String[] args) throws IOException { 
  * new MybatisDemo1().queryById(); }
  * public void queryById() throws IOException {
  *  //1、读取到SqlMapConfig.xml文件的流 String path = "SqlMapConfig.xml"; 
  * InputStream config = Resources.getResourceAsStream(path);
//创建会话工厂,同时将SqlMapConfig.xml里面的数据放到工厂中 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); 
//开启会话 SqlSession sqlSession = factory.openSession();  
Object obj = sqlSession.selectOne("test.findById", 1); System.out.println(obj); } }

进行模糊查询:查询出多条结果集


<!-- 在原有的xml文件中进行配置即可,不需要新建,之前的也已经在SqlMapConfig.xml文件中进行了配 置 --> <select id="queryByName" parameterType="java.lang.String" resultType="com.woniuxy.model.Product"> SELECT * FROM t_product WHERE name like "%${value}%" </select> public void queryByName() throws Exception
{
 String path = "SqlMapConfig.xml"; //获取流对象 InputStream config = Resources.getResourceAsStream(path); //获取会话工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); //开启会话 SqlSession sqlSession = factory.openSession();  List<Object> list = sqlSession.selectList("test.queryByName", "旺仔"); //迭代 System.out.println(list); 
}

新增语句


<!-- 新增一条数据 parameterType:传入参数的数据类型,用失血模型对象即可。 --> 
<insert id="insertProduct" parameterType="com.woniuxy.model.Product"> 
INSERT INTO t_product(name,p_number,price) value(#{name},#{p_number},# {price}); 
</insert>

 public void insert() throws Exception{ String path = "SqlMapConfig.xml"; 
* //获取流对象 
* InputStream config = Resources.getResourceAsStream(path); //获取会话工厂
*  SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); 
* //开启会话 
* SqlSession sqlSession = factory.openSession();
*  Product prod = new Product();
*  prod.setName("雪碧"); 
* prod.setP_number(10); 
* prod.setPrice(3.0);
*  int row = sqlSession.insert("test.insertProduct", prod); System.out.println(row); sqlSession.commit(); sqlSession.close(); }

mapper代理的方式进行讲解增、删、改、查(重点)
步骤1:创建对应的Mapper接口,和之前的dao接口一致
步骤2:编写对应的xxmapper.xml配置文件。有要求
1)mapper标签里面的namespace:必须写成对应的Mapper接口的全路径名
2)sql语句里面的id:必须和接口中对应方法的名称一致。
3)sql语句里面的parameterType:必须要和接口中方法的形式参数数据类型一致
4)sql语句里面的resultType:必须和接口中方法的返回值数据类型一致
步骤3:将编写好的**mapper.xml文件在SqlMapConfig.xml文件中加载
步骤4:编写实现类,并在这里直接测试
别名和mapper映射详解
设置别名
在mybatis配置文件中,别名是一直存在的,实际上在框架中已经存在一些默认的别名。比如
java.lang.String对应的别名:String,java.lang.Integer对应的别名:int
开发中,一般mapper.xml配置文件中的parameterType和resultType往往对应的名称需要写上
model的全路径,而且还是多次被重复使用,可以选择给该路径取一个别名。用别名来替换比较复杂的
全路径名
以扫描包的形式进行配置
自定义的POJO类(重点)
自定义POJO类,一般指的是高级查询,在想要的数据和传入的条件不再一张表中,通过表所创建的失血
模型model已经不能够满足传入参数的需求了,这个时候,就需要使用自定义的POJO类
因为一个失血模型已经不能够满足查询输入参数的要求了,所以进行扩展,创建一个UserCustom类,里
面包含user对象声明和userInfo对象声明

以上就是mybatis实现mapper代理模式的方式的详细内容,更多关于mybatis mapper代理模式的资料请关注编程网其它相关文章!

--结束END--

本文标题: mybatis实现mapper代理模式的方式

本文链接: https://www.lsjlt.com/news/128788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis实现mapper代理模式的方式
    今晚继续复习mybtis 以根据id值查询单条数据为例 编写SqlMapConfig.xml文件 <configuration> <!-- 使用mybatis...
    99+
    2022-11-12
  • MyBatis源码剖析之Mapper代理方式详解
    目录源码剖析-getmapper()源码剖析-invoke()具体代码如下: //前三步都相同 InputStream resourceAsStream = Resources.ge...
    99+
    2022-11-13
  • MyBatis源码剖析之Mapper代理方式细节
    MyBatis是一个流行的Java持久层框架,它提供了多种方式来执行数据库操作,其中之一就是通过Mapper代理方式。通过Mapper代理方式,开发者可以编写接口,然后MyBatis会动态地生成接口的实现类,从而避免了繁琐的SQL映射配置。...
    99+
    2023-08-16
    mybatis java 开发语言 原力计划
  • SpringAOP的底层实现方式-代理模式
    目录1.1 静态代理1.2 动态代理1.2.1 JDK动态代理(必须有接口)1.2.2 CGlib动态代理在学习Spring的过程中,留下一下痕迹。 代理模式,其实就是让别人做同样的...
    99+
    2022-11-12
  • spring mybatis获取mapper的方式有哪些
    本篇内容介绍了“spring mybatis获取mapper的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!spring-myba...
    99+
    2023-07-05
  • myBatis的mapper映射文件之批量处理方式
    目录mybatis批量插入mybatis批量删除mybatis批量修改myBatis mapper文件详解Mapper文件中包含的元素有mybatis支持别名:jdbcType与Ja...
    99+
    2022-11-12
  • spring-mybatis获取mapper的四种方式汇总
    目录spring-mybatis获取mapper方式汇总1.用实现类获取这个用户2.SqlSessionDaoSupport获取3.MapperFactoryBean4.Mapper...
    99+
    2023-03-07
    spring mybatis获取mapper mybatis获取mapper spring mybatis mapper
  • mybatis配置mapper-locations位置的多种方式
    方式一 xml文件与mapper类放在一起。 yml 配置 mybatis: config-location: classpath:mybatis-config.xml mapper-locations: classpath:c...
    99+
    2023-08-16
    mybatis java mysql
  • Mapper动态代理如何在Mybatis中实现
    Mapper动态代理如何在Mybatis中实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、实现原理     &nbs...
    99+
    2023-05-31
    mybatis mapper pp
  • Mybatis中怎么利用 mapper实现动态代理
    Mybatis中怎么利用 mapper实现动态代理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言在开始动态代理的原理讲解以...
    99+
    2022-10-18
  • python 实现 代理模式
    本文的目录地址本文的代码地址在某些应用中,我们需要在访问某个对象之前执行一个或多个重要的操作,例如,访问敏感信息——在允许用户访问敏感信息之前,我们希望确保用户具备足够的权限。操作系统也存在类似的情况,用户必须具有管理员权限才能在系统中安...
    99+
    2023-01-31
    模式 python
  • 代理模式golang 实现
    代理模式在软件开发中有着重要的作用,它可以使得客户端与实际处理请求的对象之间间接地联系起来,这样设计出来的软件更加灵活和可扩展。在本文中,我们将通过golang语言来实现一个简单的代理模式。什么是代理模式?代理模式是一种结构型设计模式,它通...
    99+
    2023-05-14
  • MyBatis模糊查询的几种实现方式
    大家好呀,我是柚子,今天这篇文章总结MyBatis模糊查询的几种实现方式~ 文章目录 前言一、模糊查询的几种实现方式1.concat函数和#{}拼接的方式2.%和${}拼接的方式3.concat函数和${}拼接的方式4.||和...
    99+
    2023-08-18
    mybatis java spring boot
  • SpringBoot+Mybatis使用Mapper接口注册的几种方式
    目录I.环境准备1.数据库准备2.项目环境II.实例演示1.实体类,Mapper类2.注册方式2.1@MapperScan注册方式2.2@Mapper注册方式2.3MapperSca...
    99+
    2022-11-12
  • Java设计模式的代理模式怎么实现
    这篇文章主要介绍了Java设计模式的代理模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java设计模式的代理模式怎么实现文章都会有所收获,下面我们一起来看看吧。什么是代理模式代理模式的定义: 由于某...
    99+
    2023-06-30
  • Mybatis通过Mapper代理连接数据库的方法
    1.在数据库中创建表和相应字段,如下图我创建了三个字段分别为fromname,message,toname,类型为varchar 2.创建对应的pojo实体类,注意类型要和数据库创...
    99+
    2022-11-12
  • Mybatis分页方式及实现原理
    一、mybatis的4种分页方式(物理分页、逻辑分页) 借助Sql语句Q进行分页(物理分页) 拦截器分页(物理分页)通过拦截器给sq语句末尾加Eimt语句来查询 借助 数组Q进行分页(逻辑分页) RowBounds分页插件实现分页...
    99+
    2023-08-31
    mybatis java 开发语言
  • Mybatis 中Mapper使用package方式配置报错的解决方案
    踩了个坑,写出来 Mybatis 中Mapper使用package方式配置报错 org.apache.ibatis.binding.BindingException: Invali...
    99+
    2022-11-12
  • 关于MyBatis模糊查询的几种实现方式
    目录一、模糊查询的几种实现方式1.concat函数和#{}拼接的方式2.%和${}拼接的方式3.concat函数和${}拼接的方式4.||和#{}拼接的方式5.建议使用的方式二、用m...
    99+
    2023-05-18
    MyBatis查询 MyBatis模糊查询
  • Java设计模式之代理模式原理及实现代码分享
    简介Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:中介。代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。...
    99+
    2023-05-30
    java 设计模式 代理模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作