Java案例如何整合MyBatis?

wen java案例 27

本文目录导读:

Java案例如何整合MyBatis?

  1. Maven项目整合(推荐方式)
  2. 核心配置文件(mybatis-config.xml)
  3. 实体类
  4. Mapper接口
  5. XML映射文件(UserMapper.xml)
  6. 测试代码
  7. Spring Boot整合(推荐方式)
  8. 常用注解方式(简化XML配置)
  9. 运行测试步骤

我来详细说明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&amp;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);
}

运行测试步骤

  1. 创建数据库表
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;
  1. 按照上述步骤配置项目
  2. 运行测试代码

整合完成后,你就可以使用MyBatis进行数据库操作了,建议优先使用Spring Boot整合方式,更加便捷高效。

抱歉,评论功能暂时关闭!