MyBatis操作数据库---从入门到理解
文章目录
- 关于MyBatis操作数据库
- MyBatis⼊⻔(使用)
- Mybatis操作数据库的步骤:
- 配置数据库连接字符串
- 使⽤MyBatis完成简单的增删改查操作
- 注解
- xml
- 单元测试
- 开启驼峰命名(推荐)
- 打印日志
关于MyBatis操作数据库
在之前的学习,我们了解到web应⽤程序⼀般分为三层,即:Controller、Service、Dao
请求流程如下:浏览器发起请求,先请求Controller,Controller接收到请求之后,调⽤Service进⾏业务逻辑处理,Service再调⽤Dao,但是之前为了简单,我们Dao层的数据是Mock(虚假的、自己编造的)的,真实的数据应该从数据库中读取
我们想到:我们可以使用JDBC来操作数据库,但是JDBC操作实在是太复杂了。。
JDBC回顾
操作流程:
- 创建数据库连接池DataSource
- 通过DataSource获取数据库连接Connection
- 编写带?占位符的SQL语句
- 通过Connection及SQL创建操作命令对象Statement
- 替换占位符:指定要替换的数据库字段类型,占位符索引及要替换的值
- 使⽤Statement执⾏SQL语句
- 查询操作:返回结果集ResultSet,更新操作:返回更新的数量
- 处理结果集
- 释放资源
我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等~⽽所有的这些操作步骤都需要在每个⽅法中重复书写
那怎么办呢`` 在更为复杂的项目情况中,一定有其他解决办法!!!
- MyBatis是⼀款优秀的持久层框架,⽤于简化JDBC的开发
- MyBatis本来是Apache的⼀个开源项⽬iBatis,2010年这个项⽬由apache迁移到googlecode,并且改名为MyBatis 2013年11⽉迁移到Github
- 持久层:指的就是持久化操作的层,通常指数据访问层(dao),是⽤来操作数据库的
MyBatis⼊⻔(使用)
Mybatis操作数据库的步骤:
- 准备⼯作(创建springboot⼯程、导⼊mybatis的起步依赖、mysql的驱动包)
- 引⼊Mybatis的相关依赖,配置Mybatis(数据库连接信息)
- 编写SQL语句
- 测试
<!--Mybatis 依赖包-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version>
</dependency>
<!--mysql驱动包-->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>
配置数据库连接字符串
Mybatis中要连接数据库,需要数据库相关参数配置
• MySQL驱动类
• 登录名
• 密码
• 数据库连接字符串
如果是application.yml⽂件,配置内容如下:
# 数据库连接配置
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=falseusername: rootpassword: driver-class-name: com.mysql.cj.jdbc.Driver
使⽤MyBatis完成简单的增删改查操作
注解
Mybatis的持久层接⼝规范⼀般都叫XxxMapper
@Mapper注解:表⽰是MyBatis中的Mapper接⼝
• 程序运⾏时,框架会⾃动⽣成接⼝的实现类对象(代理对象),并给交Spring的IOC容器管理
• @Select注解:代表的就是select查询,也就是注解对应⽅法的具体实现内容
使⽤#{} 的⽅式获取⽅法中的参数
@Mapper
public interface UserInfoMapper {//查询所有用户@Select("select username, `password`, age, gender, phone from userinfo")public List<UserInfo> queryAllUser();
}
@Select("select username, `password`, age, gender, phone from userinfo where
id= #{id} ")
UserInfo queryById(Integer id);
xml
- 配置数据库连接字符串和MyBatis
- 写持久层代码
# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
mybatis:mapper-locations: classpath:mapper/**Mapper.xml
持久层代码分两部分
- ⽅法定义Interface
- ⽅法实现:XXX.xml
单元测试
在创建出来的SpringBoot⼯程中,在src下的test⽬录下,可以自动创建测试类,
直接使⽤这个测试类来进⾏测试 在需要测试的Mapper接⼝中,右键->Generate->Test
开启驼峰命名(推荐)
通常数据库列使⽤蛇形命名法进⾏命名(下划线分割各个单词),⽽Java属性⼀般遵循驼峰命名法约定
为了在这两种命名⽅式之间启⽤⾃动映射,需要将mapUnderscoreToCamelCase 设置为true
mybatis:configuration:map-underscore-to-camel-case: true #配置驼峰⾃动转换
打印日志
在Mybatis当中我们可以借助⽇志,查看sql语句的执⾏、执⾏传递的参数以及执⾏结果
在配置⽂件中进⾏配置即可
mybatis:configuration: # 配置打印 MyBatis⽇志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
测试类上添加了注解@SpringBootTest,该测试类在运⾏时,就会⾃动加载Spring的运⾏环境
通过@Autowired这个注解,注⼊我们要测试的类,就可以开始进⾏测试了
tip:
掌握MyBatis的写法
掌握MyBatis相关的⽇志配置