Mybatis 简单的CRUD 基于XML文件配置

所有的ORM框架学习曲线都是先来一个CRUD爽一爽,下面我们就来CRUD一下,所有的配置都是基于上一篇的配置。废话不多说,直接上代码。

<?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.bird.mybatis.bean.userMapper">
	<!--CRUD  -->
	<insert id="insertUser" parameterType="com.bird.mybatis.bean.Users">
		insert into users(name, age) values(#{name}, #{age});
	</insert>
	
	<delete id="deleteUser" parameterType="int">
		delete from users where id = #{id};
	</delete>
	
	<update id="updateUser" parameterType="com.bird.mybatis.bean.Users">
		update users set name = #{name}, age = #{age} where id = #{id};
	</update>
	
	<select id="getUser" parameterType="int" resultType="com.bird.mybatis.bean.Users">
		select * from users where id = #{id};
	</select>
	
	<select id="getAllUser" resultType="com.bird.mybatis.bean.Users">
		select * from users;
	</select>
</mapper>


package com.bird.mybatis.bean;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

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 org.junit.Before;
import org.junit.Test;

public class MyTest {
	
	private SqlSessionFactory factory;
	
	@Before
	public void init() {
		String resource = "conf.xml";
		Reader reader = null;
		try {
			reader = Resources.getResourceAsReader(resource);
		} catch (IOException e) {
			e.printStackTrace();
		}
		factory = new SqlSessionFactoryBuilder().build(reader);
	}
	
	@Test
	public void testAdd() {
		//默认是手动的 
		SqlSession session = factory.openSession();
		String statement = "com.bird.mybatis.bean.userMapper.insertUser";
		int rows = session.insert(statement, new Users(-1, "哈哈", 29));
		//提交
		session.commit();
		System.out.println(rows);
		session.close();
	}
	
	@Test
	public void testUpdate() {
		SqlSession session = factory.openSession();
		String statement = "com.bird.mybatis.bean.userMapper.updateUser";
		session.update(statement, new Users(4, "呵呵", 29));
		session.commit();
		session.close();
	}
	
	@Test
	public void testDelete() {
		SqlSession session = factory.openSession();
		String statement = "com.bird.mybatis.bean.userMapper.deleteUser";
		session.delete(statement, 1);
		session.commit();
		session.close();
	}
	
	@Test
	public void testGetAllUser() {
		SqlSession session = factory.openSession();
		String statement = "com.bird.mybatis.bean.userMapper.getAllUser";
		List<Users> list = session.selectList(statement);
		System.out.println(list.size());
		session.close();
	}
}

Ok,so easy, 哪里不会点哪里

### 关于 MyBatis Plus 中 `mapper.xml` 文件配置 MyBatis Plus 是基于 MyBatis 进行二次封装的一个框架,简化了开发流程并提供了更多便捷的功能。尽管如此,在某些情况下仍然需要通过自定义 SQL 来满足特定需求,这时就需要用到 `mapper.xml` 文件。 #### 配置基础结构 在 MyBatis Plus 中,`<mapper>` 元素依然是映射文件的根元素[^4]。为了使 MyBatis Plus 和传统的 MyBatis 映射文件兼容,通常会保持相同的命名空间(namespace),该命名空间应对应实体类对应的 Mapper 接口全限定名: ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <!-- SQL 语句 --> </mapper> ``` #### 定义 CRUD 方法 对于简单的增删改查操作,MyBatis Plus 提供了一套默认实现,无需额外编写 SQL 语句即可完成大部分工作。然而当遇到复杂业务逻辑时,则需手动添加相应的 `<insert>`, `<update>`, `<delete>` 或者 `<select>` 标签来描述具体的操作过程[^1]。 例如,下面是一个用于查询用户的例子: ```xml <select id="getUserById" resultType="com.example.entity.User"> SELECT * FROM user WHERE id=#{id} </select> ``` 这里需要注意的是参数类型(`parameterType`)和返回结果类型(`resultType`)的选择要与实际使用的 Java 类型相匹配。 #### 使用动态SQL 除了静态 SQL 外,还可以利用 MyBatis 的动态 SQL 特性来增强灵活性。比如条件判断、循环遍历等功能都可以借助内置标签如 `<if>`, `<choose>`, `<when>`, `<otherwise>`, `<foreach>` 等轻松实现[^2]。 示例中展示了一个带有多个可选过滤条件的查询语句片段: ```xml <select id="getUsersByConditions" parameterType="map" resultMap="BaseResultMap"> SELECT <include refid="allColumns"/> FROM users u <where> <if test="name != null and name != '' "> AND u.name LIKE CONCAT('%',#{name},'%') </if> <if test="age != null"> AND u.age >= #{age} </if> </where> </select> ``` 此部分代码展示了如何根据传入的不同参数组合灵活调整最终执行的 SQL 文本。 #### 结合全局配置项 最后值得一提的是,MyBatis Plus 支持多种方式来自定义全局设置,这些设定可以影响整个应用程序的行为模式,包括但不限于分页插件(PageHelper)集成、乐观锁机制启用等特性[^3]。虽然这部分内容主要集中在应用层面而非具体的 `mapper.xml` 文件内,但对于理解整体架构依然非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值