前言:今天讲解的是mybatis的一些入门操作,适合刚学习mybatis的新手小白或是对mybatis感兴趣的同学,希望本文对你们的学习有所帮助,后续我也将介绍更多关于mybatis的相关操作
回顾jdbc操作
在学习mybatis之前,我们要先了解jdbc是如何操作的,从jdbc入手会让我们对mybatis的学习更加深入
- 创建 datasource(数据库连接池)
- 通过 datasource 获取数据库连接 connection
- 编写要执行的带 ?(占位符)的 sql 语句
- 通过 connection 及 sql 创建操作命令对象 statement
- 替换占位符:指定要替换的数据库字段类型、占位符索引及要替换的值
- 使用 statement 执行 sql 语句
- 查询操作:返回结果集 resultset(数据库字段与 java 对象属性一一对应)
- 更新操作:返回受影响的行数
- 处理结果集:例如打印对象信息等
- 释放资源
我们可以看出有许多重复性的代码,少量代码是需要我们自定义的,像编写sql语句,替换占位符,处理结果集,那我们何不将重复的代码封装起来,让我们只用写不同的代码就好。
什么是mybatis
为了方便程序员的操作,mybatis集成了mysql,将jdbc封装成框架,我们可以不再重复书写相同的代码,如创建datasource,释放资源等,而只需使用mybatis框架便可代替上面冗杂的代码,总结mybatis就是一个便于我们连接数据库,操作数据库,替代jdbc的一个框架
| mybatis | jdbc |
| 由mysql提供 | 由jdk提供 |
| 代码量少,操作方便 | 重复性高,代码冗杂 |
共同点:两者皆完成了和数据库的交互工作,让我们可以把数据存储在数据库中
mybatis操作流程
springboot集成了mybatis框架,所以我们创建spring项目来操作mybati
1.引入mybatis和mysql驱动依赖
也可以手动引入依赖
mysql驱动
<dependency>
<groupid>com.mysql</groupid>
<artifactid>mysql-connector-j</artifactid>
<scope>runtime</scope>
</dependency>mybatis依赖
<dependency>
<groupid>org.mybatis.spring.boot</groupid>
<artifactid>mybatis-spring-boot-starter</artifactid>
<version>3.0.0</version>
</dependency>⚠️spring6 / boot3 → jdk17,starter 必须 3.x,mybatis‑spring3.x,mybatis 核心 3.5+。
2.配置数据库相关信息
# 数据库连接配置
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterencoding=utf8&usessl=false
username: root
password: 070609
driver-class-name: com.mysql.cj.jdbc.driver
mybatis:
mapper-locations: classpath:mapper/**mapper.xml
configuration: # 配置打印 mybatis⽇志
log-impl: org.apache.ibatis.logging.stdout.stdoutimpl
map-underscore-to-camel-case: true #配置驼峰⾃动转换url中mybatis_test是数据库名,username和password分别是你的用户名和用户密码,建议不要手写输入,最好把这个配置放在代码仓中,要的时候直接复制!
3.创建对应的java类
将我们要访问的数据表中的字段和java类的属性一一对应

如果是多个单词,表字段单词均为小写,单词之间用_分割,类属性为小驼峰形式,第一个单词首字母小写,后面单词首字母为大写
| 表属性 | 类字段 |
| create_time | createtime |
4.创建mapper类执行sql语句
@mapper
public interface userinfomapper {
}sql语句的实现有两种形式:注解注入/xml,本文讲解注解注入,xml的实现将在下文推出~
注解注入
查(select)
@select("select * from user_info ")
list<userinfo>selectalluserinfo();可以看出其实就是写sql语句
测试代码
@test
void selectalluserinfo() {
system.out.println(mapper.selectalluserinfo());
}
也可以进行条件查询
@select("select * from user_info where id=1 or id =2")
list<userinfo>selectalluserinfobyid();增(insert)
@insert("insert into user_info (username,password,age) values(#{username},#{password},#{age})")
integer insert(userinfo userinfo);#{}表示参数注入,参数将替换占位符,和表字段对应,两者要一致,如果你想使用传参的方式进行查询列表也是可以的
@select("select * from user_info where username =#{username}")
list<userinfo>selectalluserinfo(string username);添加自增属性
@options(usegeneratedkeys = true,keyproperty = "id")
@option可以表示自增id,r如果没有usergeneratedkeys一般默认usergeneratedkeys为false,表示没有自增属性。
改(update)
@update("update from user_info set username=#{name} where id =1")
integer updatebyid(string name);
删(delete)
@delete("delete from user_info where id =#{id}")
integer deletebyid(integer id);通过指定id删除表中的成员
参数重命名
@select("select * from user_info where id=#{userid}")
userinfo selectallbyid(@param("userid") integer id);如果不想让占位符的参数名和方法参数名一致,可以使用@param对参数重命名之后,但是如果重命名之后传参只能使用@param括号中的名字,原来的参数名无法使用!
传递多个参数
@select("select * from user_info where id=#{id} and username=#{username}")
userinfo selectallbyidandusername(integer id,string username);传递参数比较多元化,主要是根据业务的需求查询和使用数据库
传递对象
@insert("insert into user_info (username,password,age) values(#{username},#{password},#{age})")
integer insert(userinfo userinfo);传递对象的时候可以用对象的属性进行传参,也可以通过注解@param使用对象名.属性的形式进行传参
对象重命名
@param不仅进行重命名,同时也进行了参数绑定,如果直接使用属性进行传参,则会报错显示找不到参数
@insert("insert into user_info (username,password,age) values(#{userinfo.username},#{userinfo.password},#{userinfo.age})")
integer insert2(@param("userinfo") userinfo userinfo);总结
1.通过mybatis可以更简便地连接数据库,进行数据库操作,或将数据永久化处理
2.传递参数为对象时,如果没有进行重命名,不能sql语句不能使用对象名.属性的形式,只能填入属性,否则会报错
3.当对象重命名的时候,只能通过对象名.属性进行传参,如果只填入属性,mybatis会找不到该属性而报错
4.新增数据的时候如果字段为not null,必须要填入,否则会报错。如果有默认值default的话就可以选择不填入该信息,数据库会自动将默认值放入该字段
5.修改数据的时候如果字段为not null,但是没有修改到这个字段,不会报错,字段依旧是未修改前的数据
6.传参使用#{}或者${}都可以,但是两者有区别:#{}会给参数添加“”,而${}是纯字符串拼接,不会添加“”(后续会单独写一篇博客进行介绍)
7.使用注解写sql语句比较适合简单一点的sql语句,使用xml比较适合复杂一点的sql语句,如动态sql
到此这篇关于利用mybatis实现mysql基础操作方法的文章就介绍到这了,更多相关mybatis实现mysql操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论