博客
关于我
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/

    你可能感兴趣的文章
    python3实现socket通信
    查看>>
    Python关于numpy.transpose函数详细解析附代码
    查看>>
    Python3导入自定义模块的3种方式
    查看>>
    python3打开txt文件_使用Python 3从文本文件读取句子并添加到列表中
    查看>>
    python3爬虫抓取智联招聘职位信息代码
    查看>>
    Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能
    查看>>
    python3的 pymysql把mysqldb库取代了,让python 3支持mysqldb的解决方法
    查看>>
    Python3笔记——IDE的选择
    查看>>
    python3简单使用requests 用户代理,cookie池
    查看>>
    Python3组播通信编程实现教程(发送者+接收者)
    查看>>
    Python3编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>
    python3读取redis返回数据带有'b'的问题
    查看>>
    Python3连接MySQL
    查看>>
    Python关于isinstance函数的解析 | 附Demo(全)
    查看>>
    Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
    查看>>
    python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
    查看>>
    python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
    查看>>
    Python: AES加密与解密
    查看>>
    Python: Range() 最大尺寸;动态的还是静态的?
    查看>>
    Python: Windows下用 multiprocessing 的深坑
    查看>>