【MyBatis】day01搭建MyBatis框架

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 【MyBatis】day01搭建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框架

导入jar包

编写配置文件

使用核心类库

2.1 准备

  • 建库建表建约束
  • 准备maven工程

2.2 搭建Mybatis框架步骤

  1. 导入jar包
1. <!--导入MySQL的驱动包-->
2. <dependency>
3. <groupId>mysql</groupId>
4. <artifactId>mysql-connector-java</artifactId>
5. <version>5.1.37</version>
6. </dependency>
7. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
8. <dependency>
9. <groupId>mysql</groupId>
10. <artifactId>mysql-connector-java</artifactId>
11. <version>8.0.26</version>
12. </dependency>
13. 
14. <!--导入MyBatis的jar包-->
15. <dependency>
16. <groupId>org.mybatis</groupId>
17. <artifactId>mybatis</artifactId>
18. <version>3.5.6</version>
19. </dependency>
20. <!--junit-->
21. <dependency>
22. <groupId>junit</groupId>
23. <artifactId>junit</artifactId>
24. <version>4.12</version>
25. <scope>test</scope>
26. </dependency>
  1. 编写核心配置文件【mybatis-config.xml】
  • 位置:resources目标下
  • 名称:推荐使用mybatis-config.xml
  • 示例代码
1. <?xml version="1.0" encoding="UTF-8" ?>
2. <!DOCTYPE configuration
3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
5. 
6. <configuration>
7. <environments default="development">
8. <environment id="development">
9. <transactionManager type="JDBC"/>
10. <dataSource type="POOLED">
11. <!--                mysql8版本-->
12. <!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
13. <!--                <property name="url" value="jdbc:mysql://localhost:3306/db220106?serverTimezone=UTC"/>-->
14. <!--                mysql5版本-->
15. <property name="driver" value="com.mysql.jdbc.Driver"/>
16. <property name="url" value="jdbc:mysql://localhost:3306/db220106"/>
17. <property name="username" value="root"/>
18. <property name="password" value="root"/>
19. </dataSource>
20. </environment>
21. </environments>
22. <!--    设置映射文件路径-->
23. <mappers>
24. <mapper resource="mapper/EmployeeMapper.xml"/>
25. </mappers>
26. </configuration>
  1. 书写相关接口及映射文件
  • 映射文件位置:resources/mapper
  • 映射文件名称:XXXMapper.xml
  • 映射文件作用:主要作用为Mapper接口书写Sql语句
  • 映射文件名与接口名一致
  • 映射文件namespace与接口全类名一致
  • 映射文件SQL的Id与接口的方法名一致
  • 示例代码
1. <?xml version="1.0" encoding="UTF-8" ?>
2. <!DOCTYPE mapper
3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5. <mapper namespace="com.atguigu.mybatis.mapper.EmployeeMapper">
6. <select id="selectEmpById" resultType="com.atguigu.mybatis.pojo.Employee">
7.         SELECT
8.             id,
9.             last_name,
10.             email,
11.             salary
12.         FROM
13.             tbl_employee
14.         WHERE
15.             id=#{empId}
16. </select>
17. </mapper>
  1. 测试【SqlSession】
  • 先获取SqlSessionFactory对象
  • 再获取SqlSession对象
  • 通过SqlSession对象获取XXXMapper代理对象
  • 测试

2.3 添加Log4j日志框架

  • 导入jar包
1. <!-- log4j -->
2. <dependency>
3. <groupId>log4j</groupId>
4. <artifactId>log4j</artifactId>
5. <version>1.2.17</version>
6. </dependency>
  • 编写配置文件
  • 配置文件名称:log4j.xml
  • 配置文件位置:resources
  • 示例代码
1. <?xml version="1.0" encoding="UTF-8" ?>
2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3. 
4. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5. 
6. <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
7. <param name="Encoding" value="UTF-8" />
8. <layout class="org.apache.log4j.PatternLayout">
9. <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
10. </layout>
11. </appender>
12. <logger name="java.sql">
13. <level value="debug" />
14. </logger>
15. <logger name="org.apache.ibatis">
16. <level value="info" />
17. </logger>
18. <root>
19. <level value="debug" />
20. <appender-ref ref="STDOUT" />
21. </root>
22. </log4j:configuration>

第三章 Mybatis核心配置详解【mybatis-config.xml】

3.1 核心配置文件概述

  • MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。

3.2 核心配置文件根标签

  • 没有实际语义,主要作用:所有子标签均需要设置在跟标签内部

3.3 核心配置文件常用子标签

  • properties子标签
  • 作用:定义或引入外部属性文件
  • 示例代码
1. #key=value
2. db.driver=com.mysql.jdbc.Driver
3. db.url=jdbc:mysql://localhost:3306/db220106
4. db.username=root
5. db.password=root
1. <properties resource="db.properties"></properties>
2. 
3. <environments default="development">
4. <environment id="development">
5. <transactionManager type="JDBC"/>
6. <dataSource type="POOLED">
7. <!--                mysql8版本-->
8. <!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
9. <!--                <property name="url" value="jdbc:mysql://localhost:3306/db220106?serverTimezone=UTC"/>-->
10. <!--                mysql5版本-->
11. <property name="driver" value="${db.driver}"/>
12. <property name="url" value="${db.url}"/>
13. <property name="username" value="${db.username}"/>
14. <property name="password" value="${db.password}"/>
15. </dataSource>
16. </environment>
17. </environments>
  • settings子标签
  • 作用:这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
  • mapUnderscoreToCamelCase属性:是否开启驼峰命名自动映射,默认值false,如设置true会自动将字段a_col与aCol属性自动映射
  • 注意:只能将字母相同的字段与属性自动映射
  • 类型别名(typeAliases)
  • 作用:类型别名可为 Java 类型设置一个缩写名字。
  • 语法及特点
1. <typeAliases>
2. <!--        为指定类型定义别名-->
3. <!--        <typeAlias type="com.atguigu.mybatis.pojo.Employee" alias="employee"></typeAlias>-->
4. <!--        为指定包下所有的类定义别名
5.                 默认将类名作为别名,不区分大小写【推荐使用小写字母】
6. -->
7. <package name="com.atguigu.mybatis.pojo"/>
8. </typeAliases>
  • Mybatis自定义别名
别名 类型
_int int
integer或int Integer
string String
list或arraylist ArrayList
map或hashmap HashMap

  • 环境配置(environments)
  • 作用:设置数据库连接环境
  • 示例代码
1. <!--    设置数据库连接环境-->
2. <environments default="development">
3. <environment id="development">
4. <transactionManager type="JDBC"/>
5. <dataSource type="POOLED">
6. <!--                mysql8版本-->
7. <!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
8. <!--                <property name="url" value="jdbc:mysql://localhost:3306/db220106?serverTimezone=UTC"/>-->
9. <!--                mysql5版本-->
10. <property name="driver" value="${db.driver}"/>
11. <property name="url" value="${db.url}"/>
12. <property name="username" value="${db.username}"/>
13. <property name="password" value="${db.password}"/>
14. </dataSource>
15. </environment>
16. </environments>
  • mappers子标签
  • 作用:设置映射文件路径
  • 示例代码
1. <!--    设置映射文件路径-->
2. <mappers>
3. <mapper resource="mapper/EmployeeMapper.xml"/>
4. <!-- 要求:接口的包名与映射文件的包名需要一致-->
5. <!--        <package name="com.atguigu.mybatis.mapper"/>-->
6. </mappers>
  • 注意:核心配置中的子标签,是有顺序要求的。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL Java 数据库连接
MyBatis 框架入门理论与实践
MyBatis 框架入门理论与实践
43 6
|
1月前
|
SQL XML Java
程序员都要懂的SQL防注入Mybatis框架SQL防注入
程序员都要懂的SQL防注入Mybatis框架SQL防注入
32 0
|
1月前
|
SQL Java 数据库连接
MyBatis 优秀的持久层框架(一)
MyBatis 优秀的持久层框架
88 0
|
16天前
|
SQL Java 关系型数据库
Java中的ORM框架——myBatis
Java中的ORM框架——myBatis
|
1月前
|
SQL 缓存 Java
持久层框架MyBatis
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的操作。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
48 1
|
4天前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
13 4
|
4天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
15 2
|
6天前
|
SQL XML Java
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
10 1
|
14天前
|
Java 数据库连接 Android开发
SSM框架——使用MyBatis Generator自动创建代码
SSM框架——使用MyBatis Generator自动创建代码
17 2
|
1月前
|
XML Java 数据库连接
Java一分钟之MyBatis:持久层框架基础
【5月更文挑战第15天】MyBatis是Java的轻量级持久层框架,它分离SQL和Java代码,提供灵活的数据库操作。常见问题包括:XML配置文件未加载、忘记关闭SqlSession、接口方法与XML映射不一致、占位符使用错误、未配置ResultMap和事务管理不当。解决这些问题的关键在于正确配置映射文件、管理SqlSession、避免SQL注入、定义ResultMap以及确保事务边界。遵循最佳实践可优化MyBatis使用体验。
30 2
Java一分钟之MyBatis:持久层框架基础