当前位置: 首页 > article >正文

Mybatis XML改查操作(结合上文)

"改"操作

先在UserInfoXMLMapper.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.mybatisdemo.mapper.UserInfoXMLMapper">

    <update id="update">
        update userinfo
        set phone = #{phone}
        where id = #{id}
    </update>
</mapper>

然后在 接口 UserInfoXMLMapper 中 :

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserInfoXMLMapper {
   
    Integer update(UserInfo userInfo);


}

然后右键,Generate,test,勾选update,ok

 然后完善代码,把Id为7的人的phone改为66666

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.Configuration;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;
import static org.junit.jupiter.api.Assertions.*;

@Slf4j
@SpringBootTest
class UserInfoXMLMapperTest {
@Autowired
    private UserInfoXMLMapper userInfoXMLMapper;
   
    @Test
    void update() {
        UserInfo userInfo = new UserInfo();
        userInfo.setPhone("66666");
        userInfo.setId(7);
        userInfoXMLMapper.update(userInfo);
    }

   
}

 

 

 

"查"操作(企业开发中尽量不使用*,需要哪些字段就写哪些字段,都需要就全写上)

Mybatis 会自动地根据数据库的字段名和Java对象的属性名进行映射,如果名称一样就进行赋值

但是那些名称不一样的,我们想要拿到,该怎么拿呢?

一开始数据库字段名和Java对象属性名如下图所示,名称不一样

所以当我们查询内容的时候,就会发现这三个字段没有成功映射

通常情况下数据库字段名为蛇形命名(delete_flag)和Java属性名称为驼峰命名(deleteFlag),所以我们如果能够自动转换,那就能成功查询了

所以这里推荐一个办法可以自动转驼峰,就是在 application.yml 里面配置 :

mybatis:
 configuration:
 map-underscore-to-camel-case: true #配置驼峰⾃动转换

就像这样 :

这样这三个数据就能成功找到了

还有一种方式是 : 定义Result

在 UserInfoXMLMapper.xml 里面

resultMap 里面的 id 自己取名,里面 type 就是 : 你要映射的Java对象的类所在的packet+对象名

<?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.mybatisdemo.mapper.UserInfoXMLMapper">

    <resultMap id="XMLResultMap" type="com.example.mybatisdemo.model.UserInfo">
        <id column="id" property="id"></id>  //主键,这一行可以不写
        <result column="delete_flag" property="deleteFlag"></result>
        <result column="create_time" property="createTime"></result>
        <result column="update_time" property="updateTime"></result>
    </resultMap>

    <select id="selectAll2"  resultMap="XMLResultMap">
        select * from userinfo
    </select>

</mapper>

然后在 UserInfoXMLMapper接口中 :

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserInfoXMLMapper {
    List<UserInfo> selectAll2();

   
}

右键,Generate,test,勾选selectAll2,ok

package com.example.mybatisdemo.mapper;

import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.Configuration;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;
import static org.junit.jupiter.api.Assertions.*;

@Slf4j
@SpringBootTest
class UserInfoXMLMapperTest {
@Autowired
    private UserInfoXMLMapper userInfoXMLMapper;
   
    @Test
    void selectAll2() {
        List<UserInfo> userInfos = userInfoXMLMapper.selectAll2();
        log.info(userInfos.toString());
    }
}

成功! 


http://www.kler.cn/news/163050.html

相关文章:

  • SpringBoot集成WebSocket
  • Redis 基础—Redis Desktop Manager(Redis可视化工具)安装及使用教程
  • 如何使用玻璃材质制作3D钻石模型
  • 【conda】利用Conda创建虚拟环境,Pytorch各版本安装教程(Ubuntu)
  • IO多路转接之select
  • SQL命令---修改数据库的编码
  • 【ChatGLM3】第三代大语言模型多GPU部署指南
  • node14升级node16之后无法启动处理
  • Java编程中通用的正则表达式(二)
  • idea__SpringBoot微服务05——JSR303校验(新注解)(新的依赖),配置文件优先级,多环境切换
  • Mysql 命令行导出SQL文件和导入文件
  • mybatisplus手动获取数据源执行非主数据库事务
  • sql行转列
  • java-两个列表进行比较,判断那些是需要新增的、删除的、和更新的
  • 线性回归与逻辑回归:深入解析机器学习的基石模型
  • LinuxBasicsForHackers笔记 -- 日志系统
  • AGM CPLD 应用指南
  • 《每天一个Linux命令》 -- (5)通过sshkey密钥登录服务器
  • Could not resolve all dependencies for configuration ‘:app:androidApis‘.
  • Amazon CodeWhisperer 开箱初体验
  • JAVA程序如何打jar和war问题解决
  • CentOS系统装机流程
  • 【场景测试用例】上传文件
  • 【数据开发】Hive 多表join中的条件过滤与指定分区
  • ReactNative性能优化实践
  • Azure云WAF服务的CRS规则和DRS规则区别
  • 大数据技术3:数据仓库的ETL和分层模型
  • vite配置nework访问ip
  • 电脑知识:关于电脑使用的误区
  • Linux查看openSSL版本