1.一、MyBatis入门

一、MyBatis入门

我们做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库,现在主流的方式是:Mybatis。

一、什么是MyBatis?

在这里插入图片描述

MyBatis官网的解释:

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

什么是 MyBatis?
  • MyBatis是一款用Java语言编写的持久层框架,它使用ORM实现了结果集的封装。

  • ORM是Object Relational Mapping对象关系映射,简单说,就是把数据库表中字段和实体类实体类的属性对应起来,让开发者通过操作实体类就可以实现操作数据库表,它封装了JDBC操作的许多细节,使开发者只需要关注SQL语句本身,而无需关心注册驱动、创建连接等复杂过程。

  • ORM:Object-Relation-Mapping,也就是对象关系映射,是一种程序设计思想,MyBatis就是ORM的一种实现方式,简单来说就是将数据库中查询出来的数据映射到对应的实体中,底层通过反射机制来自动赋值。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  • MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。

  • MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

  • 官网:MyBatis 中文网 官网 (p2hp.com)

  • 现在基本上使用的都是主流的MyBatis框架来简化JDBC的开发。

  • 框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上 进行软件开发更加高效、规范、通用、可拓展。

二、MyBatis入门

1. 快速入门

MyBatis操作数据库的方式和图形化界面工具操作数据库的方式,底层的逻辑是一样的

1.1 入门程序分析

以前我们是在图形化客户端工具中编写SQL查询代码,发送给数据库服务器来执行,数据库执行后返回操作结果。img

图形化工具会把数据库执行的查询结果,使用表格的形式展现出来:

img

现在使用Mybatis操作数据库,就是在Java程序当中来编写SQL查询代码,然后再将这条SQL语句发送给数据库服务器来执行,数据库执行后返回结果给Java程序。

img

Mybatis(Java程序)会把数据库执行的查询结果,使用实体类封装起来(一行记录对应一个实体类对象),也就是说,返回的每一条数据都会封装为一个对象,表中的字段最终会自动地封装到对象的属性当中。

img

建议让表中字段名与类中属性名保持一致,这样框架就可以完成自动封装

Mybatis操作数据库的步骤:

  1. 准备工作(创建springboot工程、数据库表user、实体类User) [实体类用来封装用户信息]
  2. 引入Mybatis的相关依赖,配置Mybatis(配置数据库连接信息)
  3. 编写SQL语句(注解/XML)
1.2.1 准备工作
1.2.1 准备工作

1.2.1.1 创建springboot工程

创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包。

Location代表的是我们所创建的这个模块放在哪一个磁盘目录下。

在这里插入图片描述

项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖

1. Mybatis的使用步骤如下: - 定义数据源:配置数据库连接信息,如数据库地址、用户名、密码等; - 定义Mapper文件:编写SQL语句,将其与Mapper接口关联; - 定义Mapper接口:定义对应的SQL语句方法,与Mapper文件中的SQL语句相对应; - 配置SqlSessionFactory:通过SqlSessionFactoryBuilder读取Mybatis配置文件,创建SqlSessionFactory; - 创建SqlSession:通过SqlSessionFactory创建SqlSession; - 调用Mapper接口方法:使用SqlSession调用Mapper接口方法,完成数据库操作; - 提交事务:调用SqlSession的commit()方法提交事务。 2. 解决驼峰问题的方式有两种: - 使用resultMap标签:在查询语句中使用下划线命名法,然后在resultMap标签中将查询结果映射为驼峰命名法; - 使用配置文件:在Mybatis的配置文件中添加配置项,将下划线自动转换为驼峰命名法。 3. Mybatis入门案例代码如下: ```java // User.java public class User { private Long id; private String userName; private String password; // getter and setter } // UserMapper.java public interface UserMapper { @Select("SELECT id, user_name as userName, password FROM user WHERE id = #{id}") User getUserById(@Param("id") Long id); } // applicationContext.xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath*:mapper/*.xml" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper" /> </bean> // mybatis-config.xml <configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <typeAliases> <typeAlias type="com.example.model.User" alias="User" /> </typeAliases> </configuration> // userMapper.xml <mapper namespace="com.example.mapper.UserMapper"> <resultMap id="UserResultMap" type="User"> <id property="id" column="id" /> <result property="userName" column="user_name" /> <result property="password" column="password" /> </resultMap> <select id="getUserById" resultMap="UserResultMap"> SELECT id, user_name, password FROM user WHERE id = #{id} </select> </mapper> ``` 其中,驼峰问题通过mybatis-config.xml文件中的mapUnderscoreToCamelCase配置项解决,数据库参数抽取通过applicationContext.xml文件中的占位符配置实现,切换数据库环境通过修改applicationContext.xml中的dataSource配置项实现,别名通过typeAliases标签配置实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒洋洋大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值