Mybatis 知识点大总结

本文详细介绍了Mybatis框架,包括其是什么、为何使用、持久层概念、配置问题、增删改查操作以及如何解决属性名和字段名不一致的问题。通过阅读,读者将掌握Mybatis的核心配置、Mapper.xml的配置、SqlSession的创建和关闭,以及日志工厂的配置等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、简介

1.1、什么是Mybatis

1.1.2如何获得Mybatis?

1.2、持久层

1.3、持久层

1.4、为啥需要使用Mybatis?

2.mabatis 配置问题

2.1 xxxMapper.xml在核心文件中的配置,有两种方式,推荐包的形式(就是把xxxMapper.xml全都下载这个包下面)

2.2、sqlsession 的创建​编辑

2.3 一些注意问题

 2.4、使用Map

3.实现增删改查 crud

4.SqlMapConfig.xml核心配置文件

4.1 configuration(配置)

4.2 类型别名

4.3 settings 配置

 4.4映射器(mappers)

4.5生命周期和作用域

5.解决属性名和字段名不一致的问题

6.日志

  6.1 日志工厂(核心配置文件中配置)


1、简介

1.1、什么是Mybatis

  • MyBatis是一款优秀的持久层框架
  • 它支持定制化SQL、存储过程以及高级映射。
  • MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
  • MyBatis 可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO (Plain Old JavaObjects,普通老式Java对象)为数据库中的记录。
  • MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。
  •  2013年11月迁移到Github。

1.1.2如何获得Mybatis?

  Github : https://github.com/mybatis/mybatis-3

    Mybatis入门必看文档:   mmybatis – MyBatis 3 | 入门

1.2、持久层

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
  • 内存:断电即失
  • 数据库(jdbc)io文件持久化
  • 生活中:冷藏(吃的时候去解冻)

why? 持久化

  • 有一些对象不能让他丢掉
  • 内存太贵

1.3、持久层

Dao层,service层,Controller层

  • 完成持久化工作的代码块
  • 地层界线十分明显

1.4、为啥需要使用Mybatis?

  • 帮助程序员将程序存入到数据库中
  • 简化传统JDBC,简化框架和自动化
  • 不用Mybais也可以,开发简单(Maven依赖+sql映射文件+xml配置文件)
  • sql和代码分离,提高可 维护性
  • 提供映射表前,支持对象数据库orm字段的关系映射
  • 支持对象关系组件映射
  • 提供xml标签,支持编写动态sql

2.mabatis 配置问题

2.1 xxxMapper.xml在核心文件中的配置,有两种方式,推荐包的形式(就是把xxxMapper.xml全都下载这个包下面)

2.2、sqlsession 的创建

 综上所述:记得利用try catch 在 finally中 执行 sqlsession.close()

2.3 一些注意问题

 2.4、使用Map

如果我们操作的数据库字段多,比较容易混淆,可以使用map 来实现 操作如下

//    万能的map  接口
    public int addUser2(Map<String,Object> map);
//此时#{} 里面的内容就是 String 所代替的内容 赋值的时候设置好value值与其对应   value的类型与数据库中的 字段类型对应
<insert id="addUser2" parameterType="map">
insert into user(id,passwd)
values(#{userId},#{password})
   </insert>
   @Test
    public void testMapAddUser(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserDaoMapper mapper = sqlSession.getMapper(UserDaoMapper.class);
         Map<String,Object> map =new HashMap<>();
         map.put("userId",7);
        map.put("password",999999);
        int i = mapper.addUser2(map);
        System.out.println(i);
 sqlSession.commit();
sqlSession.close();
    }

3.实现增删改查 crud

4.SqlMapConfig.xml核心配置文件

4.1 configuration(配置)

注意:environments 标签内 可以配置多个环境 也就是数据库 需要哪一个只需要修改DEFAULT属性即可 。

4.2 类型别名

4.3 settings 配置

 11.Mybatis核心配置文件之<settings></settings>_羊肉串学爪哇的博客-优快云博客

常用的

 4.4映射器(mappers)

MapperRegistry 注册绑定我们的Mapper文件:

4.5生命周期和作用域

生命周期和作用域, 是至关重要的 因为措施的使用会导致严重的后果

SqlsessinFactoryBuilder

  • 一旦创建了SqlsessinFactory 就不在需要了
  • 局部便令

SqlsessinFactory

  • 可以想象为数据库连接池
  • SqlsessinFactory一旦被创建就应该在运行期间一直存在,没有理由丢弃他或者穿件另一个实例
  • 因此SqlsessinFactory的最佳坐拥数是应用作用域
  • 最简单的就是使用单例模式或者静态单例模式

Sqlsessin

  • 连接到一个连接池的请求
  • Sqlsessin的实力不是线程安全的,因此是不能被 共享的 最佳作用域是请求方法或作用域
  • 用完之后需要关闭,否则资源被占用!!! sqlsession.colse()  十分重要的

5.解决属性名和字段名不一致的问题

数据库:

实体类:

 查询的password 为null  说明字段名不匹配

 解决办法:

  • 起别名(能解决问题 但没有意义)
 <select id="getUserById" resultType="com.qiku.pojo.User">
      select id,username,passwd as password
      from user where id=#{id}
    </select>
  • resultMap 映射( column 是数据库中的字段  而property 是实体类中的字段 一样的其实可以不用映射比如 id 和name) 
     <resultMap id="UserMap" type="user">
      <id column="id" property="id"></id>
    <result column="username" property="username"></result>
            <result column="passwd" property="password"></result>
        </resultMap>
    
        <select id="getUserById" resultMap="UserMap">
          select *
          from user where id=#{id}
        </select>

    6.日志

  6.1 日志工厂(核心配置文件中配置)

如果一个数据库操作,出现了日常,日志就是最好的助手 以前用debug 现在就用日志工厂

 <settings>
<!--        日志工厂注意 大小写和 空格  任意出错都用不了-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值