当前位置: 首页 > news >正文

Mybatis01 - 教程

一、MyBatis核心知识点

1. 数据库字段与Java属性映射

- 挑战场景:数据库字段是下划线格式(如 delete_flag ),Java实体类属性是小驼峰格式(如 deleteFlag ),直接查询会导致映射失败。

- 解决方式:

- 方式1:SQL中用 AS 别名映射(不推荐):

sql

SELECT delete_flag AS deleteFlag FROM user_info

- 方式2:MyBatis映射文件中用 <Result> 标签指定映射(灵活):

xml

<ResultMap id="userMap" type="UserInfo">

<Result column="delete_flag" property="deleteFlag"/>

<Result column="create_time" property="createTime"/>

</ResultMap>

<select id="selectList" resultMap="userMap">

SELECT * FROM user_info

</select>

- 方式3:配置文件开启自动驼峰映射(推荐):

yaml

mybatis:

configuration:

map-underscore-to-camel-case: true # 下划线自动转小驼峰

2. MyBatis参数传递规则

- 单参数:SQL中参数名可任意写(如 #{任意名} ):

java

// Mapper接口

UserInfo selectById(Integer id);

xml

<select id="selectById" resultType="UserInfo">

SELECT * FROM user_info WHERE id = #{param}

</select>

- 多参数:

- 规则:SQL中参数名必须与方法参数名一致(或用 @Param 指定别名)。

- 错误示例(参数名不匹配):

java

List<UserInfo> selectByAgeAndGender(Integer age, Integer gender);

xml

<!-- 错误:SQL中用了param,但技巧参数是age/gender -->

<select id="selectByAgeAndGender" resultType="UserInfo">

SELECT * FROM user_info WHERE age = #{param} AND gender = #{param2}

</select>

- 正确示例1(参数名一致):

xml

<select id="selectByAgeAndGender" resultType="UserInfo">

SELECT * FROM user_info WHERE age = #{age} AND gender = #{gender}

</select>

- 正确示例2(用 @Param 别名):

java

List<UserInfo> selectByAgeAndGender(@Param("ageParam") Integer age, @Param("genderParam") Integer gender);

xml

<select id="selectByAgeAndGender" resultType="UserInfo">

SELECT * FROM user_info WHERE age = #{ageParam} AND gender = #{genderParam}

</select>

3. MyBatis与JDBC的关系

- MyBatis是JDBC的封装框架,简化了JDBC的重复代码(如连接创建、Statement创建、结果集映射等)。

- 使用MyBatis仍需引入数据库驱动:

xml

<!-- MyBatis依赖 -->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>3.0.3</version>

</dependency>

<!-- MySQL驱动 -->

<dependency>

<groupId>com.mysql</groupId>

<artifactId>mysql-connector-j</artifactId>

<scope>runtime</scope>

</dependency>

4. 数据库配置注意事项

- 密码为空时,配置文件中密码需用空字符串( password: "" )。

- 密码为纯数字时,需用引号包裹( password: "123456" )。

yaml

spring:

datasource:

url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false

username: root

password: "123456" # 纯数字密码用引号

driver-class-name: com.mysql.cj.jdbc.Driver

二、接口设计与日志

1. 接口统一返回格式

- 接口返回通常设计为对象,涵盖状态码、错误信息、真实数据:

java

public class Result<T> {

private Integer code; // 状态码(如200=成功,500=失败)

private String msg; // 错误原因

private T data; // 真实内容

// 省略构造器、getter/setter

}

2. 日志配置(Logback)

- 日志作用:发现问题、定位问题、解决问题。

- 配置示例(指定日志级别、输出路径):

yaml

logging:

level:

com.biti.controller: trace # 包级别日志

file:

name: loggers/app.log # 日志文档路径+名称

logback:

rollingpolicy:

max-file-size: 200MB # 单个日志文档最大大小

三、代码片段

1. MyBatis Mapper接口+映射文件

java

// Mapper接口

public interface UserInfoMapper {

List<UserInfo> selectList();

UserInfo selectById(Integer id);

List<UserInfo> selectByAgeAndGender(@Param("age") Integer age, @Param("gender") Integer gender);

Integer insertUser(UserInfo userInfo);

}

xml

<!-- 映射文件UserInfoMapper.xml -->

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3//apper.dtd">

<mapper namespace="com.biti.mapper.UserInfoMapper">

<resultMap id="userMap" type="com.biti.entity.UserInfo">

<result column="delete_flag" property="deleteFlag"/>

<result column="create_time" property="createTime"/>

<result column="update_time" property="updateTime"/>

</resultMap>

<select id="selectList" resultMap="userMap">

SELECT * FROM user_info

</select>

<select id="selectById" resultType="com.biti.entity.UserInfo">

SELECT * FROM user_info WHERE id = #{id}

</select>

<select id="selectByAgeAndGender" resultType="com.biti.entity.UserInfo">

SELECT * FROM user_info WHERE age = #{age} AND gender = #{gender}

</select>

<insert id="insertUser" parameterType="com.biti.entity.UserInfo">

INSERT INTO user_info (username, password, age) VALUES (#{username}, #{password}, #{age})

</insert>

</mapper>

2. 统一返回结果类

四、小结

别慌!MyBatis其实就是帮你简化数据库操作的程序,核心是“少写重复代码,专注写SQL”。

一、MyBatis是啥?

它是Java里的数据库操作框架,把JDBC(原生数据库操作)的重复步骤(连数据库、传参数、转结果)都封装好了,你只需要写SQL和定义实体类。

二、核心功能(解除的挑战)

1. 字段自动映射:

数据库字段是 delete_flag (下划线),Java类属性是 deleteFlag (小驼峰),MyBatis能自动对应(配个 map-underscore-to-camel-case: true 就行)。

2. 参数传递:

- 传1个参数:SQL里写 #{随便名} 都能用。

- 传多个参数:SQL里的参数名要和方式参数名一模一样,或者用 @Param("别名") 指定。

3. 写SQL的方式:

可以在XML文件里写SQL(推荐,好维护),也可以在接口方法上用注解写(简单SQL用)。

三、用MyBatis的步骤(极简版)

1. 引入MyBatis和数据库驱动的依赖(比如MySQL驱动)。

2. 写数据库配置(地址、账号、密码)。

3. 定义实体类(对应数据库表的字段)。

4. 定义Mapper接口(声明要执行的方法,比如查列表、查详情)。

5. 写XML映射文件(把接口方法和SQL对应起来)。

四、关键注意点

- SQL里的参数名要和方法参数名对应,不然会报错“找不到参数”。

- 数据库字段和Java属性名字不一样时,要么配自动驼峰映射,要么在XML里写 <Result> 标签指定对应关系。

容易说:MyBatis就是“让你写SQL更爽、不用操心数据库连接那些破事”的工具~

http://www.jsqmd.com/news/373413/

相关文章:

  • 2026年主数据管理平台选型指南,五大主数据厂商推荐汇总 - 品牌2025
  • 基于最大熵原理的滤波算法MATLAB仿真实现
  • 2026年优质主数据管理供应商推荐,五大主数据管理系统厂商盘点 - 品牌2025
  • 2026年集成空调十大品牌排名,中央空调加燃气地暖性价比咋样 - 工业品牌热点
  • ABB PFTL 201CE-10.0-3BSE007913R11
  • 白光干涉相干性测量 - 在VirtualLab Fusion中利用分布式计算分析
  • 2026年大型集团资产管理系统软件哪家好?五大优质平台推荐汇总 - 品牌2025
  • ABB PFTL 201C-50.0-3BSE007913R50
  • KingbaseES 进阶(一):AI 模型元数据管理 —— 表设计与版本追踪
  • 2026年知名的金属检测设备,金属探测仪厂家用户好评名录 - 品牌鉴赏师
  • 从文档型数据库到企业级数据平台:一次架构演进的思考与实践
  • 2026年资产管理系统推荐:涵盖房地产、物业、城投的五家厂盘点 - 品牌2025
  • 2026昆明黄金白银回收权威排名(全机构深度解析) - 提酒换清欢
  • 2026年口碑好的动态称重机,在线称重机厂家品牌推荐榜单 - 品牌鉴赏师
  • 2026年环保设备盘点:催化燃烧领域部分厂商介绍,RTO/催化燃烧/活性炭箱/滤筒除尘器,催化燃烧订制厂家排行榜单 - 品牌推荐师
  • 2026年知名的玻璃钢一体化污水处理设备/一体化污水处理设备高评分品牌推荐(畅销) - 品牌宣传支持者
  • 2026年优秀的射线缺陷检测机,X光异物检测机厂家选型参考榜单 - 品牌鉴赏师
  • 2026年评价好的牛肉供应厂家大排行,哪家更胜一筹?牛肉/白牦牛肉/鲜牛肉/新鲜牛肉/白牦牛,牛肉品牌哪个好 - 品牌推荐师
  • 2026年比较好的智能运动摩托车/运动摩托车试驾厂家选购参考建议 - 品牌宣传支持者
  • 合肥儿童摄影推荐:2026实测五星品质,红黄蓝凭高口碑出圈 - charlieruizvin
  • 跟我学C++中级篇——Concepts的循环依赖
  • 有了大模型不是要替代程序员,而是要求程序员掌握更多的知识。大模型本身是不存储对话内容的,对话内容要存储在 Redis 或其它数据库中。 大模型通过每次接收本次聊天所有对话内容,实现记忆功能。
  • 新手必看!4个免费公众号SVG排版技巧,让你的文章瞬间文艺范十足丨公众号svg制作工具 - peipei33
  • 2026年评价高的悬挂式除铁器/山东自卸式除铁器厂家选择参考建议 - 品牌宣传支持者
  • 2026年重庆石英砂服务商排名,重庆荣顺矿产品有限公司靠谱吗 - 工业推荐榜
  • 大模型给智能体提供了一个大脑,一个完整的智能体还需要灵魂、记忆、手脚。程序员要做的,就是开发灵魂、记忆、手脚。所以不要整天悲观的认为 AI 将要取代程序员,网上的段子,听听就行。评价一下这个观点。
  • 【信号处理】(高斯分布)最大熵定理 - 教程
  • 2026年知名的冷热流道精密模具/五轴加工精密模具值得信赖厂家推荐(精选) - 品牌宣传支持者
  • 2026舟山长乔海洋公园体验超棒,市场口碑如何? - 工业品网
  • 5.5 小结 函数调用最佳实践与常见坑