MyBatis的增删改查
2026/1/15大约 1 分钟MyBatisCRUDSQL
MyBatis的增删改查
添加
<!-- int insertUser(); -->
<insert id="insertUser">
insert into t_user values(null, 'admin', '123456', 23, '男', '123@qq.com')
</insert>删除
<!-- int deleteUser(); -->
<delete id="deleteUser">
delete from t_user where id = 1
</delete>修改
<!-- int updateUser(); -->
<update id="updateUser">
update t_user set username = 'zhangsan' where id = 2
</update>查询一个实体对象
<!-- User getUserById(); -->
<select id="getUserById" resultType="User">
select * from t_user where id = 3
</select>查询集合
<!-- List<User> getAllUser(); -->
<select id="getAllUser" resultType="User">
select * from t_user
</select>注意事项
resultType 和 resultMap
查询的标签 select 必须设置属性 resultType 或 resultMap,用于设置实体类和数据库表的映射关系:
- resultType:自动映射,用于属性名和表中字段名一致的情况
- resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
返回值类型
注意
当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常 TooManyResultsException。
但是若查询的数据只有一条,可以使用实体类或集合作为返回值。
测试代码
@Test
public void testCRUD() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 添加
int insertResult = mapper.insertUser();
System.out.println("插入结果: " + insertResult);
// 删除
int deleteResult = mapper.deleteUser();
System.out.println("删除结果: " + deleteResult);
// 修改
int updateResult = mapper.updateUser();
System.out.println("修改结果: " + updateResult);
// 查询单个
User user = mapper.getUserById();
System.out.println("查询单个: " + user);
// 查询所有
List<User> userList = mapper.getAllUser();
userList.forEach(System.out::println);
}