1. Mybatis框架简介
Mybatis是一个基于Java的持久层框架,它提供了一种在Java与数据库之间高效通信的途径。Mybatis的核心概念包括:SQL映射、动态SQL、结果映射、缓存机制等。
安装Mybatis并配置环境
首先,确保你的开发环境中安装了Java开发工具。接下来,访问Mybatis的官方网站下载Mybatis所需依赖。
# 添加Maven依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
配置Mybatis的核心配置文件mybatis-config.xml
:
<?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>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
2. 基本配置与使用
2.1 配置Mybatis的映射文件:
创建UserMapper.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">
<!-- 查询所有用户 -->
<select id="selectAllUsers" resultType="com.example.model.User">
SELECT * FROM user
</select>
</mapper>
2.2** 使用Mybatis进行数据查询:
创建Java接口UserMapper.java
:
package com.example.mapper;
import com.example.model.User;
import java.util.List;
public interface UserMapper {
List<User> selectAllUsers();
}
创建配置类SqlSessionFactoryConfig.java
:
package com.example.config;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlSessionFactoryConfig {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory getSqlSessionFactory() {
if (sqlSessionFactory == null) {
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
throw new RuntimeException("Failed to create SqlSessionFactory", e);
}
}
return sqlSessionFactory;
}
}
3. 动态SQL与XML映射
在UserMapper.xml
中使用动态SQL:
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUsersByCondition" parameterType="com.example.model.UserCondition" resultMap="userResultMap">
SELECT * FROM user
<if test="name != null">
WHERE name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</select>
</mapper>
4. 结果映射与对象绑定
创建User.java
类:
package com.example.model;
public class User {
private int id;
private String name;
private int age;
// 省略getter和setter方法,仅展示属性定义
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建UserResultMap.xml
文件进行结果映射:
<?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">
<resultMap id="userResultMap" type="com.example.model.User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
</mapper>
5. 缓存机制
在mybatis-config.xml
中配置缓存:
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="localCacheScope" value="SESSION"/>
</settings>
6. 案例实战
构建一个简单的项目实例,整合Mybatis与数据库操作。这个例子包括创建数据库表、填充数据、查询数据并更新数据。
创建数据库表:
在MySQL中执行以下SQL:
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT NOT NULL
);
填充数据:
INSERT INTO user (name, age) VALUES ('Alice', 25);
INSERT INTO user (name, age) VALUES ('Bob', 30);
查询数据并更新数据:
import com.example.mapper.UserMapper;
import com.example.model.User;
public class UserController {
private final UserMapper userMapper;
public UserController(UserMapper userMapper) {
this.userMapper = userMapper;
}
public void listUsers() {
List<User> users = userMapper.selectAllUsers();
for (User user : users) {
System.out.println(user);
}
}
public void updateUser() {
User user = new User();
user.setId(1);
user.setName("Charlie");
userMapper.updateUser(user);
}
}
通过以上步骤,从零开始构建了一个简单的Mybatis项目,实践了配置、数据访问、动态SQL、结果映射、缓存机制,并通过案例展示了如何在实际环境中使用Mybatis解决数据访问问题。Mybatis的灵活性和强大功能使得数据访问层的实现变得高效和可维护。
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦