本文目录导读:

- Maven项目整合(推荐方式)
- 核心配置文件(mybatis-config.xml)
- 实体类
- Mapper接口
- XML映射文件(UserMapper.xml)
- 测试代码
- Spring Boot整合(推荐方式)
- 常用注解方式(简化XML配置)
- 运行测试步骤
我来详细说明Java项目整合MyBatis的几种常见方式:
Maven项目整合(推荐方式)
添加依赖(pom.xml)
<dependencies>
<!-- MyBatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- 连接池(可选) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.20</version>
</dependency>
</dependencies>
核心配置文件(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>
<!-- 配置数据库连接信息 -->
<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?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 注册Mapper映射文件 -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
实体类
public class User {
private Integer id;
private String username;
private String email;
private Integer age;
// getter和setter方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Mapper接口
package com.example.mapper;
import com.example.entity.User;
import java.util.List;
public interface UserMapper {
// 查询所有用户
List<User> findAll();
// 根据ID查询用户
User findById(Integer id);
// 插入用户
int insert(User user);
// 更新用户
int update(User user);
// 删除用户
int delete(Integer id);
}
XML映射文件(UserMapper.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.entity.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="email" column="email"/>
<result property="age" column="age"/>
</resultMap>
<!-- 查询所有用户 -->
<select id="findAll" resultMap="userResultMap">
SELECT * FROM user
</select>
<!-- 根据ID查询 -->
<select id="findById" parameterType="int" resultMap="userResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 插入用户 -->
<insert id="insert" parameterType="com.example.entity.User">
INSERT INTO user(username, email, age)
VALUES(#{username}, #{email}, #{age})
</insert>
<!-- 更新用户 -->
<update id="update" parameterType="com.example.entity.User">
UPDATE user
SET username = #{username}, email = #{email}, age = #{age}
WHERE id = #{id}
</update>
<!-- 删除用户 -->
<delete id="delete" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
测试代码
package com.example;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class MyBatisDemo {
public static void main(String[] args) {
try {
// 1. 加载核心配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 2. 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 3. 创建SqlSession
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
// 4. 获取Mapper接口代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 5. 执行查询操作
List<User> userList = userMapper.findAll();
System.out.println("所有用户:");
for (User user : userList) {
System.out.println(user.getUsername() + " - " + user.getEmail());
}
// 6. 执行插入操作
User newUser = new User();
newUser.setUsername("张三");
newUser.setEmail("zhangsan@example.com");
newUser.setAge(25);
int result = userMapper.insert(newUser);
if (result > 0) {
System.out.println("插入成功!");
}
// 7. 提交事务
sqlSession.commit();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Spring Boot整合(推荐方式)
添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
application.yml配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.entity
configuration:
map-underscore-to-camel-case: true
启动类添加Mapper扫描
@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Service层使用
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> findAll() {
return userMapper.findAll();
}
public User findById(Integer id) {
return userMapper.findById(id);
}
@Transactional
public void addUser(User user) {
userMapper.insert(user);
}
}
常用注解方式(简化XML配置)
public interface UserMapper {
@Select("SELECT * FROM user")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "email", column = "email"),
@Result(property = "age", column = "age")
})
List<User> findAll();
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Integer id);
@Insert("INSERT INTO user(username, email, age) VALUES(#{username}, #{email}, #{age})")
int insert(User user);
@Update("UPDATE user SET username=#{username}, email=#{email}, age=#{age} WHERE id=#{id}")
int update(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
int delete(Integer id);
}
运行测试步骤
- 创建数据库表
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 按照上述步骤配置项目
- 运行测试代码
整合完成后,你就可以使用MyBatis进行数据库操作了,建议优先使用Spring Boot整合方式,更加便捷高效。