MyBatis是一个优秀的持久层框架,它消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis通过简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库中的记录。
第一章:MyBatis简介
1.1 MyBatis的核心思想
MyBatis的核心思想是解耦数据库操作和业务逻辑,使得开发者可以专注于业务逻辑的实现。它通过提供映射文件和注解来定义SQL语句与Java对象的映射关系。
1.2 MyBatis的优势
- 易于使用:MyBatis通过简单的XML配置或注解即可实现数据库操作。
- 支持自定义SQL:允许用户自定义复杂的SQL语句,包括存储过程、触发器等。
- 缓存机制:MyBatis提供了一级缓存和二级缓存机制,可以减少数据库访问次数,提高性能。
- 动态SQL:支持动态SQL,如if、choose、foreach等。
第二章:MyBatis环境搭建
2.1 安装JDK
首先,确保你的开发环境安装了Java Development Kit (JDK),推荐版本为1.8以上。
2.2 安装Maven
Maven是一个项目管理工具,用于构建、测试和部署Java项目。下载并安装Maven,并配置环境变量。
2.3 创建Maven项目
使用IDE(如IntelliJ IDEA或Eclipse)创建一个Maven项目,并添加必要的依赖。
<dependencies>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MySQL驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- 数据库连接池依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
</dependencies>
2.4 配置数据库连接
在src/main/resources目录下创建一个名为mybatis-config.xml的文件,配置数据库连接信息。
<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/mydb?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- 映射器配置 -->
</configuration>
第三章:编写Mapper接口
3.1 创建Mapper接口
在项目中创建一个接口,用于定义数据库操作的方法。
public interface UserMapper {
int insert(User record);
User selectById(Integer id);
}
3.2 创建Mapper XML
在src/main/resources/mapper目录下创建一个名为UserMapper.xml的文件,配置SQL语句。
<mapper namespace="com.example.mapper.UserMapper">
<insert id="insert" parameterType="User">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
<select id="selectById" parameterType="int" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
第四章:使用MyBatis
4.1 配置SqlSessionFactory
在Application.java中配置SqlSessionFactory。
public class Application {
public static void main(String[] args) {
try {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsInputStream("mybatis-config.xml"));
// 使用SqlSessionFactory创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取Mapper接口
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 调用数据库操作方法
User user = mapper.selectById(1);
System.out.println(user);
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.2 实战案例:CRUD操作
以下是一个简单的增删改查操作案例。
public class User {
private Integer id;
private String name;
private Integer age;
// 省略getter和setter方法
}
public class Application {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = ...;
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 创建用户
User user = new User();
user.setName("张三");
user.setAge(20);
mapper.insert(user);
sqlSession.commit();
// 查询用户
user = mapper.selectById(1);
System.out.println(user);
// 更新用户
user.setAge(21);
mapper.update(user);
sqlSession.commit();
// 删除用户
mapper.delete(1);
sqlSession.commit();
}
}
}
第五章:进阶使用
5.1 动态SQL
MyBatis支持动态SQL,通过使用<if>, <choose>, <when>, <otherwise>, <foreach>等标签,可以编写更加灵活的SQL语句。
5.2 缓存机制
MyBatis提供了一级缓存和二级缓存机制。一级缓存默认开启,是SqlSession级别的缓存,而二级缓存是Mapper级别的缓存,可以通过配置来开启。
5.3 批处理
MyBatis支持批处理,可以通过<batch>标签实现批量插入或更新操作。
结语
通过本章的介绍,相信你已经对MyBatis有了基本的了解。MyBatis是一个非常强大且灵活的持久层框架,可以帮助开发者更高效地实现数据库操作。希望你在实际开发中能够运用所学知识,提升项目开发效率。
