Mybatis第一天(介绍,使用步骤,核心对象)

mybatis

mybatis是一款优秀的持久层框架,它支持自定义sql,存储过程已经高级映射,也就是说mybatis是用来优化dao层的

一.优点:

  1. 相比于JDBC连接数据库,代码更加简洁(相当于减少了50%以上的代码量)
  2. 简单易学
  3. 支持编写动态sql(可以直接在对应的xml文件使用if等判断来拼接sql)
  4. 支持对象和数据库的ORM关系映射(ORM:object relation mapping 对象关系映射)
  5. 将sql语句分离,也就是从程序代码中将sql语句单独分离出来,便于统一管理和重用

二.缺点:

  1. sql语句的编写工作量比较大
  2. sql语句过于依赖数据库,导致数据库的移植性比较差

三.mybatis使用步骤:

  1. 配置mybatis的核心xml文件:通常配置文件名为mybatis-config.xml(类似于database.propertis,在src下面创建包resources,然后放在下面)
  2. 在mybatis-config.xml配置文件中添加相关配置内容(可以去官网复制实例代码)
  3. 引入database.propertis数据库连接相关信息文件(也可以不引入直接在mybatis-config.xml中写)
    --1 使用<properties resource="database.properties"/>引入database.properties
    --2 使用<properties>标签,直接将数据库连接信息写到xml
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/kgcnews?useUnicode=true&amp;characterEncoding=UTF-8"/>
<property name="user" value="root"/>
<property name="password" value="520115gjl"/>
</properties>
  1. 创建XXXMapper.xml文件(专门写sql语句的)
    注意:
    -- 通常每个XXXMapper.xml只对应一个表
    -- namespace:命名空间,每个XXXmapper.xml对应一个命名空间(唯一的),namespace是关联同名的接口
    -- select标签:对应的是查询的sql语句,id标签:对应的是映射该sql语句的名字(id对应的是接口中的方法名), resultType属性:对应的是返回值类型.(如果此处结果集返回的是一个对象,则会自动将结果集映射到对应的实体类中,映射是通过实体类中的get和set相关方法来实现的,所以要求实体类中必须有set和get方法)
    复制官网的代码:
    image

  2. 引入相关jar包并且写测试类
    -- 通过SQLSession核心对象来执行对应的sql语句,并获取返回值
    List<User>list=ss.getMapper(UserMapper.class).getAll();
    或者int num = ss.getMapper(UserMapper.class).count();
    -- selectOne是返回一个结果集
    -- selectList是返回多个结果集
    image

  3. 为了简化测试类中使用selectOne或者selectList(该种方法容易写错,而且还不好入参)
    我们通常会创建一个和XXXMapper.xml同名的XXXMapper接口,该接口中的方法名必须和XXXMapper.xml中的id'名一致,而且该接口的路径也需要和XXXMapper.xml在同一个包下面,
    正好对应的XXXMapper.xml中的namespace命名空间

mybatis中的三个核心对象

  1. SqlSession(最重要的,又称一级缓存)
  2. SqlSessionFactory-->c创建SqlSession
  3. SqlSessionFactoryBuilder-->创建SqlSessionFactory

${}和#{}的区别

${}是将当中的内容当中的内容当做一个字符串来进行解析的,解析之后,相当于是在原来的sql上面拼接该内容
#{}是将当中的内容当做是占位符中的内容;嗷进行设置的,获取之后,会在该内容上面加上''
sql注入:通过拼写sql内容,让sql语句始终成立 能够查询出内容
#{}可以一定程度上防止sql注入

posted @   不再犹豫27  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示