当前位置: 首页 > news >正文

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis初识和框架搭建

第一章 初识Mybatis

1.1 框架概述
  • 生活中“框架”
    • 买房子
    • 笔记本电脑
  • 程序中框架【代码半成品】

    • Mybatis框架:持久化层框架【dao层】
    • SpringMVC框架:控制层框架【Servlet层】
    • Spring框架:全能…
1.2 Mybatis简介
  • Mybatis是一个半自动化持久化层ORM框架

  • ORM:Object Relational Mapping【对象 关系 映射】

    • 将Java中的对象与数据库中建议映射关系,优势:操作Java中的对象,就可以影响数据库中表的数据
  • Mybatis与Hibernate对比

    • Mybatis是一个半自动化【需要手写SQL】
    • Hibernate是全自动化【无需手写SQL】
  • Mybatis与JDBC对比

    • JDBC中的SQL与Java代码耦合度高
    • Mybatis将SQL与Java代码解耦
  • Java POJO(Plain Old Java Objects,普通老式 Java 对象)

    • JavaBean 等同于 POJO
1.3 官网地址
  • 文档地址:mybatis.org/mybatis-3/
  • 源码地址:github.com/mybatis/mybatis-3

第二章 搭建Mybatis框架

导入jar包

编写配置文件

使用核心类库

2.1 准备
  • 建库建表建约束
  • 准备maven工程
2.2 搭建Mybatis框架步骤
  1. 导入jar包

    <!--导入MySQL的驱动包-->
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version>
    </dependency><!--导入MyBatis的jar包-->
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version>
    </dependency>
    <!--junit-->
    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
    </dependency>
    
  2. 编写核心配置文件【mybatis-config.xml】

    • 位置:resources目标下

    • 名称:推荐使用mybatis-config.xml

    • 示例代码

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED">
      <!--                mysql8版本-->
      <!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
      <!--                <property name="url" value="jdbc:mysql://localhost:3306/db220106?serverTimezone=UTC"/>-->
      <!--                mysql5版本--><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/db220106"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--    设置映射文件路径--><mappers><mapper resource="mapper/EmployeeMapper.xml"/></mappers>
      </configuration>
      
  3. 书写相关接口及映射文件

    • 映射文件位置:resources/mapper

    • 映射文件名称:XXXMapper.xml

    • 映射文件作用:主要作用为Mapper接口书写Sql语句

      • 映射文件名与接口名一致
      • 映射文件namespace与接口全类名一致
      • 映射文件SQL的Id与接口的方法名一致
    • 示例代码

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.atguigu.mybatis.mapper.EmployeeMapper"><select id="selectEmpById" resultType="com.atguigu.mybatis.pojo.Employee">SELECTid,last_name,email,salaryFROMtbl_employeeWHEREid=#{empId}</select>
      </mapper>
      
  4. 测试【SqlSession】

    • 先获取SqlSessionFactory对象
    • 再获取SqlSession对象
    • 通过SqlSession对象获取XXXMapper代理对象
    • 测试
2.3 添加Log4j日志框架
  • 导入jar包

    <!-- log4j -->
    <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
    </dependency>
    
  • 编写配置文件

    • 配置文件名称:log4j.xml

    • 配置文件位置:resources

    • 示例代码

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" /></layout></appender><logger name="java.sql"><level value="debug" /></logger><logger name="org.apache.ibatis"><level value="info" /></logger><root><level value="debug" /><appender-ref ref="STDOUT" /></root>
      </log4j:configuration>
      
http://www.lryc.cn/news/238886.html

相关文章:

  • 差分放大器工作原理(差分放大器和功率放大器区别)
  • SystemV
  • LiteOS同步实验(实现生产者-消费者问题)
  • redis的性能管理和雪崩
  • python:关于函数内 * 和 / 是什么意思?
  • PPT密码解密,简单教程,保护幻灯片内容
  • Apache Airflow (十一) :HiveOperator及调度HQL
  • SpringBoot-Docker容器化部署发布
  • 重生奇迹mu格斗怎么加点
  • 「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器
  • 大数据学习(22)-spark
  • String类常用方法总结
  • TensorFlow实战教程(二十八)-Keras实现BiLSTM微博情感分类和LDA主题挖掘分析
  • 个人博客添加访问人数以及访问时间-githubpage
  • Django--重定向redirect
  • 在html和css中的引用svg(一)
  • C/C++ 实现:自然排序:针对两个需要排序的字符串,不仅逐个比较每个字符的顺序,对于连在一起的数字字符会作为一个完整数字进行比较 某知名企业的笔试题
  • sse实时通信
  • Qt专栏3—Qt项目创建Hello World
  • linux输出的重定向无效问题和解决
  • chromium114添加新的语言国际化支持
  • 赛氪荣幸受邀参与中国联合国采购促进会第五次会员代表大会
  • 车载通信架构 —— 传统车内通信网络发展回顾
  • `maven.test.skip` 和 `skipTests` 的区别
  • linux输出的重定无效问题和解决
  • 开发上门按摩系统对技师如何管理,薪资结构怎么设计
  • 云HIS系统源码,医院管理系信息统源码,融合B/S版四级电子病历系统
  • Redis篇---第十篇
  • (vue)前后端配合实现文件预览功能
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径