MyBatis 是一个流行的Java持久层框架,它简化了数据库操作,使开发者能够以简单的方式访问数据库。本文将从入门到精通的角度,详细介绍MyBatis的基本概念、安装配置、使用方法,并提供一些实用的案例解析。
第一章:MyBatis简介
1.1 什么是MyBatis
MyBatis 是一个半ORM(对象关系映射)框架,它将SQL语句与Java代码分离,使得开发者可以专注于业务逻辑,而不是数据库操作。MyBatis 通过XML或注解的方式配置SQL映射,将Java对象与数据库表进行映射。
1.2 MyBatis的优势
- 简化数据库操作
- 高度可配置性和灵活性
- 支持自定义SQL语句
- 良好的社区支持和文档
第二章:MyBatis入门
2.1 环境搭建
首先,需要下载MyBatis的jar包,并将其添加到项目的类路径中。同时,还需要添加数据库驱动和日志相关的依赖。
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
2.2 配置MyBatis
在项目的src目录下创建一个名为mybatis-config.xml的配置文件,用于配置MyBatis的运行环境。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 数据库配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_db?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 映射器配置 -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
2.3 编写Mapper接口和XML映射文件
在项目中创建一个名为UserMapper的接口,用于定义数据库操作的方法。
package com.example.mapper;
public interface UserMapper {
int insert(User user);
User selectById(int id);
}
同时,创建一个名为UserMapper.xml的XML映射文件,用于配置SQL语句。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insert" parameterType="User">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
<select id="selectById" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
第三章:MyBatis进阶
3.1 动态SQL
MyBatis支持动态SQL,可以灵活地编写SQL语句。例如,可以使用<if>、<choose>、<when>、<otherwise>等标签实现条件判断。
<select id="selectUsersByName" resultType="User">
SELECT * FROM users
<where>
<if test="name != null">
AND name = #{name}
</if>
</where>
</select>
3.2 关联查询
MyBatis支持关联查询,可以方便地实现多表查询。
<select id="selectUserById" resultMap="userMap">
SELECT u.*, r.name AS role_name FROM users u
LEFT JOIN user_roles ur ON u.id = ur.user_id
LEFT JOIN roles r ON ur.role_id = r.id
WHERE u.id = #{id}
</select>
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<association property="role" javaType="Role">
<id property="id" column="role_id"/>
<result property="name" column="role_name"/>
</association>
</resultMap>
3.3 分页查询
MyBatis支持分页查询,可以通过<sql>标签定义公共的SQL片段,并使用<limit>标签实现分页。
<select id="selectUsersByPage" resultMap="userMap">
<sql id="selectUsersByPageSql">
SELECT * FROM users
</sql>
<sql id="selectUsersByPageLimit">
LIMIT #{offset}, #{limit}
</sql>
<select id="selectUsersByPage" resultMap="userMap">
<include refid="selectUsersByPageSql"/>
<include refid="selectUsersByPageLimit"/>
</select>
</select>
第四章:MyBatis案例解析
4.1 用户管理模块
以下是一个简单的用户管理模块示例:
package com.example.mapper;
public interface UserMapper {
int insert(User user);
User selectById(int id);
List<User> selectAll();
int update(User user);
int delete(int id);
}
<mapper namespace="com.example.mapper.UserMapper">
<!-- 省略其他SQL语句 -->
<select id="selectAll" resultType="User">
SELECT * FROM users
</select>
</mapper>
4.2 角色管理模块
以下是一个简单的角色管理模块示例:
package com.example.mapper;
public interface RoleMapper {
int insert(Role role);
Role selectById(int id);
List<Role> selectAll();
int update(Role role);
int delete(int id);
}
<mapper namespace="com.example.mapper.RoleMapper">
<!-- 省略其他SQL语句 -->
<select id="selectAll" resultType="Role">
SELECT * FROM roles
</select>
</mapper>
第五章:总结
MyBatis是一个功能强大、灵活易用的Java持久层框架。通过本文的介绍,相信你已经对MyBatis有了初步的了解。在实际开发中,你需要不断学习和实践,才能熟练掌握MyBatis的使用方法。希望本文能对你有所帮助。
