Mybatis练习(三天)

一、Mybatis CRUD操作
CRUD操作指的是创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据库中的数据。在Mybatis中,我们使用Mapper接口和对应的XML文件来执行这些操作。

首先,创建一个User类来表示数据库中的用户表:
public class User {
    private int id;
    private String username;
    private String password;
    // getters and setters
}
接下来,创建一个UserMapper接口,定义CRUD操作的方法:
public interface UserMapper {
    void insertUser(User user);
    User getUserById(int id);
    void updateUser(User user);
    void deleteUser(int id);
}
然后,在对应的UserMapper.xml文件中实现这些方法:
<!-- 添加用户 -->
<insert id="insertUser" parameterType="User">
    INSERT INTO user (username, password)
    VALUES (#{username}, #{password})
</insert>

<!-- 根据ID获取用户 -->
<select id="getUserById" parameterType="int" resultType="User">
    SELECT * FROM user WHERE id = #{id}
</select>

<!-- 更新用户 -->
<update id="updateUser" parameterType="User">
    UPDATE user SET username = #{username}, password = #{password} WHERE id = #{id}
</update>

<!-- 删除用户 -->
<delete id="deleteUser" parameterType="int">
    DELETE FROM user WHERE id = #{id}
</delete>
使用Mybatis的SqlSession来执行操作
// 创建SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();

// 获取Mapper接口的实例
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

// 插入用户
User user = new User();
user.setUsername("john");
user.setPassword("password");
userMapper.insertUser(user);
System.out.println("插入后的用户ID:" + user.getId());

// 根据ID查询用户
User retrievedUser = userMapper.getUserById(user.getId());
System.out.println("查询到的用户:" + retrievedUser.getUsername());

// 更新用户
retrievedUser.setUsername("jane");
userMapper.updateUser(retrievedUser);

// 删除用户
userMapper.deleteUser(retrievedUser.getId());

// 提交事务并关闭SqlSession
sqlSession.commit();
sqlSession.close();
二、Mybatis多条件查询和模糊查询
多条件查询和模糊查询是在数据库查询时经常遇到的需求,Mybatis提供了相应的语法来实现这些功能。
假设我们有一个Book类来表示图书信息,包含id、title和author字段。
public class Book {
    private int id;
    private String title;
    private String author;
    // getters and setters
}
我们将创建一个BookMapper接口,定义多条件查询和模糊查询的方法。
public interface BookMapper {
    List<Book> getBooksByCondition(Map<String, Object> condition);
    List<Book> getBooksByKeyword(String keyword);
}
在对应的BookMapper.xml文件中实现这些方法:
<!-- 多条件查询 -->
<select id="getBooksByCondition" parameterType="java.util.Map" resultType="Book">
    SELECT * FROM book
    WHERE
    <if test="id != null">
        id = #{id}
    </if>
    <if test="title != null">
        AND title = #{title}
    </if>
    <if test="author != null">
        AND author = #{author}
    </if>
</select>

<!-- 模糊查询 -->
<select id="getBooksByKeyword" parameterType="String" resultType="Book">
    SELECT * FROM book
    WHERE title LIKE CONCAT('%', #{keyword}, '%') OR author LIKE CONCAT('%', #{keyword}, '%')
</select>
三、Mybatis一对多关系
一对多关系是指一个实体关联多个实体的情况。在数据库中,我们可以通过外键关联来实现一对多关系。
假设我们有两个类,一个是Order类表示订单信息,另一个是OrderItem类表示订单项信息。一个订单可以包含多个订单项。
public class Order {
    private int id;
    private String orderNo;
    private List<OrderItem> orderItems;
    // getters and setters
}

public class OrderItem {
    private int id;
    private String product;
    // getters and setters
}
我们将创建一个OrderMapper接口和一个OrderItemMapper接口来进行数据库操作。
public interface OrderMapper {
    Order getOrderById(int id);
}

public interface OrderItemMapper {
    List<OrderItem> getOrderItemsByOrderId(int orderId);
}
四、Mybatis多对一关系
多对一关系是指多个实体关联一个实体的情况。在数据库中,我们可以通过外键关联来实现多对一关系。
五、Mybatis多对多关系
多对多关系是指多个实体相互关联的情况。在数据库中,我们可以通过中间表来实现多对多关系。

在学习Mybatis过程中的体会和感受:

1. 灵活性和可扩展性:Mybatis提供了很高的灵活性,可以根据项目需求自由编写SQL语句,并将其与Java代码解耦。这种灵活性使得我能够更好地控制数据库操作,并且能够根据具体场景进行优化和扩展。

2. 简化数据库操作:通过使用Mybatis,我不再需要手动编写繁琐的JDBC代码,而是可以使用简单而直观的方式进行数据库操作。这样,我能够更加专注于业务逻辑的实现,而不用过多关注数据库底层细节。

3. 易于维护和调试:Mybatis的分层结构和清晰的配置使得代码的维护和调试变得更加容易。通过将SQL语句与Java代码分离,我可以更轻松地修改和优化SQL查询,而无需影响其他部分的代码。

学习Mybatis是一次有益的经历。通过掌握Mybatis,我能够更加高效地与数据库交互,提高开发效率,同时也提升了对数据库操作的灵活性和控制能力。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值