MyBatis 开发流程(看完就会)

在使用 MyBatis 进行开发时,我们可以选择从前向后或从后向前的两种方式来构建代码。

本文将Mybatis开发的实际流程分为从前向后从后向前进行讲解

从前向后

从前向后的方式适合于初期设计阶段,或者对数据库结构和业务逻辑有清晰的理解的情况下。

1. 定义实体类 (Entity)

首先,你需要定义与数据库表结构对应的实体类。例如,对于一个名为 user 的数据库表,你需要创建一个 User 类,包含 idnameage 等属性:

public class User {
    private Integer id;
    private String name;
    private Integer age;

    // getter and setter methods
}

2. 创建 Mapper 接口

定义一个接口,用于声明对数据库的操作方法,例如 insertUsergetUserByIdupdateUserdeleteUser 等。接口方法名通常对应数据库操作的类型,例如 insertselectupdatedelete

public interface UserMapper {
    int insertUser(User user);
    User getUserById(Integer id);
    int updateUser(User user);
    int deleteUser(Integer id);
}

3. 编写 Mapper XML 文件

为每个 Mapper 接口创建一个 XML 文件,在文件中定义 SQL 语句,并与 Mapper 接口的方法进行映射。

<?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">
    <insert id="insertUser" parameterType="com.example.entity.User">
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>
    <select id="getUserById" parameterType="java.lang.Integer" resultType="com.example.entity.User">
        SELECT id, name, age FROM user WHERE id = #{id}
    </select>
    <update id="updateUser" parameterType="com.example.entity.User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

4. 配置 MyBatis

创建一个 MyBatis 配置文件 mybatis-config.xml,配置数据源、事务管理器、Mapper 文件路径等信息:

 

<?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.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

5. 创建 Service 接口和实现类

定义一个 Service 接口,用于提供业务逻辑,并在 Service 接口的实现类中调用 Mapper 接口的方法来执行数据库操作:

 

public interface UserService {
    int insertUser(User user);
    User getUserById(Integer id);
    int updateUser(User user);
    int deleteUser(Integer id);
}

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public int insertUser(User user) {
        return userMapper.insertUser(user);
    }

    @Override
    public User getUserById(Integer id) {
        return userMapper.getUserById(id);
    }

    @Override
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    @Override
    public int deleteUser(Integer id) {
        return userMapper.deleteUser(id);
    }
}

6. 使用 Service (Service Usage)

在你的应用程序中,通过注入 Service 实现类,就可以调用 Service 接口的方法来完成对数据库的增删改查操作:

 

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    // ... other methods
}

总结

MyBatis 的开发流程可以概括为:

  1. 定义实体类
  2. 创建 Mapper 接口
  3. 编写 Mapper XML 文件
  4. 配置 MyBatis
  5. 创建 Service 接口和实现类
  6. 使用 Service

当你想要增加某个SQL操作的时候,可以通过从后(Service)向前写的方法。根据需求,比如添加通过名字查找员工信息

 

从后向前

1.创建 Service 接口

首先,你需要定义一个 Service 接口,用于提供业务逻辑,例如 UserService,包含 insertUsergetUserByIdupdateUserdeleteUser 等方法。

public interface UserService {
    int insertUser(User user);
    User getUserById(Integer id);
    int updateUser(User user);
    int deleteUser(Integer id);
    User getUserByName(String name); // 新增方法
}

2.创建 Service 实现类

创建 Service 接口的实现类,例如 UserServiceImpl,在实现类中调用 Mapper 接口的方法来执行数据库操作。

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public int insertUser(User user) {
        return userMapper.insertUser(user);
    }

    @Override
    public User getUserById(Integer id) {
        return userMapper.getUserById(id);
    }

    @Override
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    @Override
    public int deleteUser(Integer id) {
        return userMapper.deleteUser(id);
    }

    @Override
    public User getUserByName(String name) {
        return userMapper.getUserByName(name); // 调用新的 Mapper 方法
    }
}

3.创建 Mapper 接口

定义一个接口,用于声明对数据库的操作方法,例如 UserMapper,包含 insertUsergetUserByIdupdateUserdeleteUser 等方法。

public interface UserMapper {
    int insertUser(User user);
    User getUserById(Integer id);
    int updateUser(User user);
    int deleteUser(Integer id);
    User getUserByName(String name); // 新增方法
}

4.编写 Mapper XML 文件

为每个 Mapper 接口创建一个 XML 文件,在文件中定义 SQL 语句,并与 Mapper 接口的方法进行映射。

<?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">
    <insert id="insertUser" parameterType="com.example.entity.User">
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>
    <select id="getUserById" parameterType="java.lang.Integer" resultType="com.example.entity.User">
        SELECT id, name, age FROM user WHERE id = #{id}
    </select>
    <update id="updateUser" parameterType="com.example.entity.User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id = #{id}
    </delete>
    <select id="getUserByName" parameterType="java.lang.String" resultType="com.example.entity.User">
        SELECT id, name, age FROM user WHERE name = #{name}
    </select> 
</mapper>

解释:

  • 首先,我们在 UserService 接口中添加了 getUserByName 方法,用于通过名字获取用户信息。
  • 然后,在 UserServiceImpl 中实现了 getUserByName 方法,并调用了新的 UserMapper 方法。
  • 最后,在 UserMapper 接口中添加了 getUserByName 方法,并在 UserMapper.xml 文件中编写了对应的 SQL 语句。

总结

在初期设计阶段,可以先使用从前向后的方式构建代码框架,然后在开发过程中,根据需求使用从后向前的方式添加新的功能。

 

 

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值