MyBatis 是一款优秀的持久层框架,用于简化 JDBC 的开发
Dao),是用来操作数据库的 
简单来说 MyBatis 是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库工具。
# 数据库连接配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver.yml 文件中[!quote] 企业建表规范:
MyBatis 的使用
MyBatis 依赖、MySQL 驱动
# 数据库连接配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.DriverMapper@Mapper
public interface UserInfoMapper {
@Select("select * from userinfo") //接口方法的实现(通过注解)
List<UserInfo> getUserInfoAll(); //方法定义
}常见问题:
SQL 语句写错 
这个信息是从 MySQL 报过来的

SQL 的问题,就把 SQL 语句复制出来,放到 SQL 客户端中运行一下,看能否运行Mapper 中的方法名不能重复首先我们要根据表创建对象,mybatis 才能把查询到的结果给我们

在 MyBatis 中,我们可以借助日志,查看到 SQL 语句的执行、执行传递的参数以及执行结果在配置文件中进行配置即可
mybatis:
configuration: # 配置打印 MyBatis⽇志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl重新运行程序,可以看到 SQL 执行内容,以及传递参数和执行结果:

需求:查找 id=4 的用户,对应的 SQL 就是:select * from userinfo wherer id = 4
@Select("select * from userinfo where id = 4")
List<UserInfo> queryById(Integer id);但是这样的话,智能查找 id=4 的数据,所以 SQL 语句中的 id 值不能写成固定数值,需要变为动态的数值
解决方案: 在 queryById 方法中添加一个参数 id,将方法中的参数,传给 SQL 语句
#{} 的方式获取方法中的参数@Select("select * from userinfo where id = #{id}")
List<UserInfo> queryById(Integer id);Mapper 接口方法形参只有一个普通类型的参数,#{} 里面的属性名可以随便写,如:#{id}、#{value}。建议和参数名保持一致添加测试用例:
@Test
void getUserInfoByDelete() {
System.out.println(userInfoMapper.queryById(4));运行结果:

@Param,设置参数的别名,如果使用 @Param 设置别名,#{...} 里面的属性名必须和 @Param 设置的一样@Select("select * from userinfo where id = #{userid}")
List<UserInfo> queryById(@Param("userid") Integer id);不过我们一般都让参数名保持一致