博客
关于我
Mybatis 从入门到精通---编程不良人
阅读量:324 次
发布时间:2019-03-01

本文共 1543 字,大约阅读时间需要 5 分钟。

MyBatis 开发指南

MyBatis 简介

MyBatis 是一个开源的数据库连接框架,旨在简化 JDBC 开发,提供更高效的数据访问层解决方案。它通过 XML配置文件或注解驱动的方式,支持动态SQL、批处理、关联关系处理等功能,适用于多种数据库类型。

环境搭建

获取sqlSession

  • 读取配置文件:mybatis-config.xml
  • 创建SqlSessionFactory
  • 获取SqlSession
  • 获取数据库连接并进行操作
  • public class TestMybatis {    public static void main(String[] args) throws SQLException, IOException {        Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);        SqlSession sqlSession = sessionFactory.openSession();        System.out.println(sqlSession);        sqlSession.getConnection().commit();    }}

    执行查询

    动态SQL

    MyBatis支持多种动态SQL标签,如<sql>、<if>、<choose>等,能够灵活处理复杂查询逻辑。

    关系映射

    通过<resultMap>标签,可以实现对象关系映射,支持一对一、一对多、多对多等关系,减少手动处理POJO对象的代码量。

    MyBatis SQL 进阶学习

    XML 中特殊字符

    • & 替换为 &amp;
    • < 替换为 &lt;
    • > 替换为 &gt;
    • " 替换为 &quot;
    • ' 保持不变

    JDBC 类型对应

    MyBatis支持多种JDBC类型,通过<result>标签进行映射,例如:

    • VARCHAR 对应 String
    • INTEGER 对应 Integer
    • DATE 对应 java.sql.Date
    • BLOB 对应 Blob

    分页查询

    通过<select>标签和rownum实现分页,支持多种分页算法。

    动态SQL 标签

    • <sql>:用于复用SQL片段
    • <if>:条件判断
    • <choose>:条件选择
    • <foreach>:批处理
    • <trim>:字符串处理
    • <set>:变量赋值

    关联关系

    一对一

    数据库中通过外键实现一对一关系,代码中通过关联对象进行操作。

    一对多

    通过集合和关联标签实现一对多关系,代码中使用<collection>标签进行封装。

    多对多

    通过中间表实现多对多关系,代码中使用<association>标签封装多个对象。

    MyBatis 配置日志

    logback 配置

  • 在application.yml中添加logback配置
  • 定义日志输出格式和路径
  • 设置日志级别
  • %d [%thread] %-5level %logger %file : %line - %msg%n
    ${scheduler.manager.server.home}/logs/${app.name}.log

    转载地址:http://nqzo.baihongyu.com/

    你可能感兴趣的文章
    Python:函数使用
    查看>>
    Python:函数进阶
    查看>>
    Python:在整数的二进制表示中查找最长的二进制间隙
    查看>>
    Python:如何从二进制转换为 base 64 并返回?
    查看>>
    Python:如何以非阻塞方式读取子进程的标准输出
    查看>>
    Python:如何使用 plotly 制作阴影区域或交替背景颜色?
    查看>>
    Python:如何根据日期时间获取值的计数
    查看>>
    python:如何检测串行 COM 上的设备名称/ID
    查看>>
    Python:如何模拟 datetime.utcnow()?
    查看>>
    Python:如果DataFrames之间的其他值匹配,则对DataFrame中的值求和
    查看>>
    Python:字典思维
    查看>>
    Python:将 HEX 字符串转换为字节
    查看>>
    Python:将列表与范围列表合并
    查看>>
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>
    Python:按字符的位置拆分字符串
    查看>>
    Python:替换嵌套字典中的值
    查看>>
    Python:爬取数据出现response.status_code为403解决方法
    查看>>
    Python:爬取数据出现response.status_code为418解决方法
    查看>>
    Python:生成“元组集“;来自“元组列表“;不考虑顺序
    查看>>