博客
关于我
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.硒.拖放错误“AttributeError:move_to 需要 WebElement“
    查看>>
    Python内置函数详解
    查看>>
    Python/Kivy:从一个类调用函数到另一个类并在 Python 中显示小部件
    查看>>
    Python/Kivy:我可以在双击标签时调用函数吗
    查看>>
    python内置函数5-frozenset()
    查看>>
    Python/Plotly:如何使用要显示的信息自定义悬停模板?
    查看>>
    Python/Selenium - 无法单击 www.instagram.com 上的“接受 cookie“按钮
    查看>>
    Python内置函数(35)——next
    查看>>
    python写入mysql
    查看>>
    python写入csv老是乱码或者各种不好
    查看>>
    Python内置函数
    查看>>
    Python2 安装MySQLdb库
    查看>>
    Python2 已终结,入手Python 3,你需要这30个技巧
    查看>>
    python写下拉列表在excel,无法使用python获取Excel下拉列表(组合框)值
    查看>>
    python2.7安装
    查看>>
    Python2.7安装ncmbot时提示:Microsoft Visual C++9.0 is required
    查看>>
    PYTHON2.Git.1
    查看>>