MyBatis 是一个流行的 Java 持久层框架,它通过 XML 或注解的方式,将对象与数据库中的记录映射起来。MyBatis 的核心功能是将 SQL 语句与 Java 对象之间的转换进行简化,支持自定义 SQL、存储过程以及高级映射。由于其灵活性,MyBatis 成为许多 Java 开发者在连接数据库时的首选框架。
本文将详细介绍如何配置和使用 MyBatis 连接数据库,包含 MyBatis 的环境配置、数据源配置、SQL 映射文件配置、以及如何使用 MyBatis 实现数据库的基本增、删、改、查功能。
1. MyBatis 环境配置
首先,确保你的开发环境已经搭建好,使用 MyBatis 需要 JDK 1.8 及以上版本。同时,需要在项目中加入 MyBatis 的相关依赖。在 Maven 项目中,可以在 "pom.xml" 文件中加入如下依赖:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency>
如果你使用的是 Gradle,可以使用以下配置:
implementation 'org.mybatis:mybatis:3.5.9' implementation 'org.mybatis:mybatis-spring:2.0.6' implementation 'mysql:mysql-connector-java:8.0.23'
2. 配置 MyBatis 数据源
为了让 MyBatis 连接数据库,你需要配置数据源。可以通过 XML 文件或 Java 配置类来完成数据源的配置。下面是一个使用 XML 配置文件进行数据源配置的例子:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="password"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean>
在这个配置中,我们首先定义了一个 "BasicDataSource",它负责连接到 MySQL 数据库。然后,我们通过 "SqlSessionFactoryBean" 配置 MyBatis 的 "SqlSessionFactory",并指定 MyBatis 的配置文件和映射文件的位置。
3. MyBatis 配置文件
MyBatis 配置文件 "mybatis-config.xml" 是 MyBatis 的核心配置文件,通常用于配置一些全局的设置,如别名、插件、日志等。
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <!-- 配置 MyBatis 使用的类型别名 --> <typeAliases> <typeAlias type="com.example.model.User" alias="User"/> </typeAliases> <!-- 配置全局的设置 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 配置插件 --> <plugins> <plugin interceptor="org.mybatis.example.MyInterceptor"> <property name="someProperty" value="value"/> </plugin> </plugins> <!-- 配置环境 --> <environments> <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/your_database"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <!-- 配置映射器 --> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration>
在这个配置文件中,我们配置了类型别名、全局设置以及数据库环境设置。同时,我们指定了 MyBatis 映射文件的位置。
4. MyBatis 映射文件
MyBatis 的映射文件通常用于定义 SQL 语句和 Java 方法之间的映射关系。假设我们有一个 "User" 类,需要执行查询用户的操作,以下是一个简单的映射文件 "UserMapper.xml" 示例:
<?xml version="1.0" encoding="UTF-8" ?> <mapper namespace="com.example.mapper.UserMapper"> <select id="selectUser" resultType="com.example.model.User"> SELECT id, username, password FROM users WHERE id = #{id} </select> </mapper>
在这个映射文件中,我们定义了一个 "selectUser" 方法,它通过 SQL 查询数据库中的 "users" 表,并返回 "User" 对象。"#{id}" 是一个占位符,用来绑定方法参数。
5. MyBatis 实现增、删、改、查功能
在 MyBatis 中,通过映射文件中的 SQL 语句实现增、删、改、查等基本操作。下面分别展示如何使用 MyBatis 实现这些基本操作。
查询操作
public User selectUser(int id) { SqlSession session = sqlSessionFactory.openSession(); try { UserMapper userMapper = session.getMapper(UserMapper.class); return userMapper.selectUser(id); } finally { session.close(); } }
插入操作
public void insertUser(User user) { SqlSession session = sqlSessionFactory.openSession(); try { UserMapper userMapper = session.getMapper(UserMapper.class); userMapper.insertUser(user); session.commit(); } finally { session.close(); } }
更新操作
public void updateUser(User user) { SqlSession session = sqlSessionFactory.openSession(); try { UserMapper userMapper = session.getMapper(UserMapper.class); userMapper.updateUser(user); session.commit(); } finally { session.close(); } }
删除操作
public void deleteUser(int id) { SqlSession session = sqlSessionFactory.openSession(); try { UserMapper userMapper = session.getMapper(UserMapper.class); userMapper.deleteUser(id); session.commit(); } finally { session.close(); } }
6. 总结
本文详细介绍了如何通过 MyBatis 框架连接数据库,并实现数据库的增、删、改、查等基本功能。通过配置数据源、MyBatis 配置文件和 SQL 映射文件,我们能够轻松地与数据库进行交互,并且充分利用 MyBatis 的灵活性进行 SQL 优化与映射操作。如果你还没有尝试过 MyBatis,本文的内容可以作为入门指南,帮助你快速上手。