mybatis学习(31):修改部分字段(有外键,先查询,再修改)

2023-11-11

 

目录结构

 

 

 

 

com.geyao.mybatis.mapper

BlogMapper类

package com.geyao.mybatis.mapper;
 
import java.util.List;
import java.util.Map;
 
import org.apache.ibatis.annotations.Param;
 
import com.geyao.mybatis.pojo.Blog;
 
public interface BlogMapper {
    Blog selectBlog(Integer id);
    
    Blog selectBlog2(Integer id);
    
    List<Blog> selectBlogByTitle(String title);
    
    List<Blog> selectBlogByTitle2(String title);
    
    List<Blog> selectBlogBySort(String column);
    
    List<Blog> selectBlogByPage(int offset,int pagesize);
    
    List<Blog> selectBlogByPage1(@Param(value="offset")int offset,@Param(value="pagesize")int pagesize);
    
    List<Blog> selectBlogByPage2(Map<String, Object>map);
    
    int insertBlog(Blog blog);
    
    int insertBlogMysql(Blog blog);
    
    int updateBlog(Blog blog);
}
BlogMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
 -->
<mapper namespace="com.geyao.mybatis.mapper.BlogMapper">
    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
    resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
    User类就是users表所对应的实体类
    -->
    <!-- 
        根据id查询得到一个user对象
     -->
     <resultMap type="Blog" id="blogResultMap">
     <id column="id" property="id" jdbcType="INTEGER"></id>
         <result column="authod_id" property="authodId" jdbcType="INTEGER"/>
     </resultMap>
     
    <select id="selectBlog" parameterType="int"   resultType="Blog">
        select 
        id,
        title,
        authod_id as authodId,
        state,
        featured,
        style
         from Blog where id=#{id}
    </select> 
    
    <select id="selectBlog2" parameterType="int"  resultMap="blogResultMap">
          select *
         from Blog where id=#{id}
    </select>
    
    <select id="selectBlogByTitle" parameterType="String" resultMap="blogResultMap">
        select * from Blog where title like #{title}
    </select>
    
    <select id="selectBlogByTitle2" parameterType="String" resultMap="blogResultMap">
        select * from Blog where title like '${value}'
    </select>
    
     <select id="selectBlogBySort" parameterType="String" resultMap="blogResultMap">
        select * from Blog order by ${value}
    </select>
    
      <select id="selectBlogByPage"  resultMap="blogResultMap">
        select * from Blog limit #{0},#{1}
    </select>
    
     <select id="selectBlogByPage1"  resultMap="blogResultMap">
        select * from Blog limit #{offset},#{pagesize}
    </select>
     <select id="selectBlogByPage2"  resultMap="blogResultMap">
        select * from Blog limit #{offset},#{pagesize}
    </select>
    
     <insert id="insertBlog" parameterType="Blog" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO Blog(
    
        title,
        authod_id,
        state,
        featured,
        style
        )
        VALUES(
    
        #{title},
        #{authodId},
        #{state},
        #{featured},
        #{style}
        )
    </insert>
     <insert id="insertBlogOracle" parameterType="Blog" >
     <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id">
         select seq.nextval as id from dual
     </selectKey>
        INSERT INTO Blog(
    
        title,
        authod_id,
        state,
        featured,
        style
        )
        VALUES(
    
        #{title},
        #{authodId},
        #{state},
        #{featured},
        #{style}
        )
    </insert>
    
    
     <insert id="insertBlogMysql" parameterType="Blog" >
     <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
         SELECT LAST_INSERT_ID()
     </selectKey>
        INSERT INTO Blog(
    
        title,
        authod_id,
        state,
        featured,
        style
        )
        VALUES(
    
        #{title},
        #{authodId},
        #{state},
        #{featured},
        #{style}
        )
    </insert>
    <update id="updateBlog" parameterType="Blog" >
    UPDATE 
    Blog
    SET
    title = #{title},
   authod_id = #{authodId},
    state = #{state},
    featured = #{featured},
style= #{ style}
    WHERE id = #{id}
    </update>
</mapper>
com.geyao.mybatis.pojo

Blog类

package com.geyao.mybatis.pojo;
 
public class Blog {
    private Integer id;
    private String title;
    private int authodId;
    private String state;
    private Boolean featured;
    private String style;
    
    public Blog() {
        super();
        
        this.title="未命名";
        this.authodId=4;
        this.state="NOT";
        this.featured=false;
        this.style="red";    
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    
    public int getAuthodId() {
        return authodId;
    }
    public void setAuthodId(int authodId) {
        this.authodId = authodId;
    }
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
    }
    public Boolean getFeatured() {
        return featured;
    }
    public void setFeatured(Boolean featured) {
        this.featured = featured;
    }
    public String getStyle() {
        return style;
    }
    public void setStyle(String style) {
        this.style = style;
    }
    @Override
    public String toString() {
        return "Blog [id=" + id + ", title=" + title + ", authodId=" + authodId + ", state=" + state + ", featured="
                + featured + ", style=" + style + "]\n";
    }
 
}
com.geyao.mybatis.util

MybatisUtil类

package com.geyao.mybatis.util;
 
import java.io.InputStream;
import java.io.Reader;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
public class MyBatisUtil {
    private static SqlSessionFactory sqlSessionFactory =null;
    static {
        try {
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    private MyBatisUtil() {}
    
    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}
log4j.properties

### \u914D\u7F6E\u6839 ###
log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE
 
### \u8BBE\u7F6E\u8F93\u51FAsql\u7684\u7EA7\u522B\uFF0C\u5176\u4E2Dlogger\u540E\u9762\u7684\u5185\u5BB9\u5168\u90E8\u4E3Ajar\u5305\u4E2D\u6240\u5305\u542B\u7684\u5305\u540D ###
log4j.logger.org.apache=dubug
log4j.logger.java.sql.Connection=dubug
log4j.logger.java.sql.Statement=dubug
log4j.logger.java.sql.PreparedStatement=dubug
log4j.logger.java.sql.ResultSet=dubug
 
### \u914D\u7F6E\u8F93\u51FA\u5230\u63A7\u5236\u53F0 ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n
mybatis-config.xml

<?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>
 
<typeAliases>
    <typeAlias type="com.geyao.mybatis.pojo.Blog" alias="Blog"/>
</typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8" />
                <property name="username" value="root" />
                <property name="password" value="123" />
            </dataSource>
        </environment>
    </environments>
      <mappers>
        <!-- 注册userMapper.xml文件, 
         userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
         <mapper resource="com/geyao/mybatis/mapper/BlogMapper.xml"/>
     </mappers>
</configuration>
单元测试

com.geyao.mybatis.util

testSelectBlog类

package com.geyao.mybatis.mapper;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
 
import com.geyao.mybatis.pojo.Blog;
import com.geyao.mybatis.util.MyBatisUtil;
 
public class testSelectBlog {
    @Test
    public void testSelectBlogNoInterface() {
        SqlSession session =MyBatisUtil.getSqlSession();
        Blog blog =(Blog)session.selectOne("com.geyao.mybatis.mapper.BlogMapper.selectBlog", 101);
        
        session.close();
        System.out.println(blog);
    }
@Test
public void testSelectBlog() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    Blog blog = blogMapper.selectBlog(1);
    System.out.println(blog);
}
 
@Test
public void testSelectBlog2() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    Blog blog = blogMapper.selectBlog2(1);
    System.out.println(blog);
}
@Test
public void testselectBlogByTitle() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    List<Blog> blogList = blogMapper.selectBlogByTitle("%g%");
    System.out.println(blogList);
}
 
@Test
public void testselectBlogByTitle2() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    List<Blog> blogList = blogMapper.selectBlogByTitle2("%g%");
    System.out.println(blogList);
}
@Test
public void testselectBlogBySort() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    List<Blog> blogList = blogMapper.selectBlogBySort("title");
    System.out.println(blogList);
}
@Test
public void testselectBlogByPage() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    List<Blog> blogList = blogMapper.selectBlogByPage(2,2);
    System.out.println(blogList);
}
@Test
public void testselectBlogByPage1() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    
    List<Blog> blogList = blogMapper.selectBlogByPage1(2,2);
    System.out.println(blogList);
}
@Test
public void testselectBlogByPage2() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    Map<String, Object> map =new HashMap<String, Object>();
    map.put("offset", 2);
    map.put("pagesize", 2);
    List<Blog> blogList = blogMapper.selectBlogByPage2(map);
    
    System.out.println(blogList);
}
 
@Test
public void testInsertBlog() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    Blog blog=new Blog();
    int count= blogMapper.insertBlog(blog);
    session.commit();
    session.close();
    System.out.println(blog);
    System.out.println("插入的"+count+"记录");
}
 
@Test
public void testinsertBlogMysql() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    Blog blog=new Blog();
    int count= blogMapper.insertBlogMysql(blog);
    session.commit();
    session.close();
    System.out.println(blog);
    System.out.println("插入的"+count+"记录");
}
 
@Test
public void testupdateBlog() {
    SqlSession session =MyBatisUtil.getSqlSession();
    BlogMapper blogMapper =session.getMapper(BlogMapper.class);
    Blog blog = blogMapper.selectBlog(1);
    //Blog blog=new Blog();
    blog.setId(1);
    blog.setTitle("geyao");
    blog.setAuthodId(3);
    //blog.setStyle("balck");
    //blog.setState("active");
    //blog.setFeatured(false);
    //blog.setAuthodId(2);
    int count= blogMapper.updateBlog(blog);
    session.commit();
    session.close();
    System.out.println(blog);
    System.out.println("修改"+count+"记录");
}
}
jar包

链接:https://pan.baidu.com/s/1g6NgzfLc5uK9S4VL-03lHg
提取码:4r2m

运行结果

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis学习(31):修改部分字段(有外键,先查询,再修改) 的相关文章

  • STM32F103c8t6+ESP8266(esp-01s)+MQTT固件+HAL库 连接阿里云(最详细+可移植)教程

    文章目录 概要 一 MQTT固件 二 阿里云账号注册 三 stm32f103的配置 三 esp8266的接收和发送 1 printf 2 串口2的DMA接收中断 3 esp8266的函数方法 四 连接阿里云 五 数据上报和数据解析 1 发送
  • Windows子系统的安装与使用

    引言 好久没有更新技术博客了 这段时间一直在学习新的知识 涉足大数据技术领域 最近有一些收获 来和大家分享一下 笔者一直用的是windows系统的电脑 但是有时候又需要用到linux系统 对此有3种方案可以实现 电脑安装双系统 安装虚拟机

随机推荐

  • 记录一下kibana启动连接报错问题(kibana server is not ready yet)

    记录一下kibana启动连接报错问题 kibana server is not ready yet 今天启动kibana出现该问题 先去看了看是否是elasticsearch连接出错 启动了容器 docker start elasticse
  • python错误与异常

    一 错误 1 语法错误 num 1 if num gt 1 print num gt 1 系统报错提示 SyntaxError expected 2 逻辑错误 编写业务逻辑错误 3 系统错误 二 异常 1 程序执行过程中出现的未知错误 2
  • 1019 数字黑洞

    给定任一个各位数字不完全相同的 4 位正整数 如果我们先把 4 个数字按非递增排序 再按非递减排序 然后用第 1 个数字减第 2 个数字 将得到一个新的数字 一直重复这样做 我们很快会停在有 数字黑洞 之称的 6174 这个神奇的数字也叫
  • 回文质数Prime Palindromes

    题目描述 因为 151 既是一个质数又是一个回文数 从左到右和从右到左是看一样的 所以 151 是回文质数 写一个程序来找出范围 a b 一亿 间的所有回文质数 输入输出格式 输入格式 第 1 行 二个整数 a 和 b 输出格式 输出一个回
  • Locust压力测试使用总结

    上次做接口压力测试前一直研究使用jmeter 本以为可以拿来使用了 但是真正进行并发接口时 发现jmeter在单机下并发1000个时 台式电脑单机资源早就被使用完 整个jmeter卡得死死的 结果那晚使用jmeter并发失败 幸好之前也准备
  • FFmpeg学习笔记--视频传输的基本概念

    目录 1 容器 container 和文件 file 2 媒体流 stream 3 数据帧 frame 和数据包 packet 4 编解码器 Codec 5 复用 mux 6 解复用 demux 7 码率 bps 和帧率 fps 8 ffm
  • 【Android -- 写作工具】Markdown 代码块

    1 前言 关于代码块 Markdown 作者给出的定义如下 预格式化代码块主要用于在 Markdown 文档中显示源代码风格的内容 相比普通的文本段落 代码块可以保留文字内容的多行换行 缩进等格式 在 Markdown 文档中生成代码块 需
  • Numpy中的(一维)数组和(行列)向量

    Numpy中的 一维 数组和 行列 向量 随笔记录 Numpy的数组和行列向量的区别 随笔记录 Numpy的数组和行列向量的区别 今天做sklearn的datasets diabetes 的实验 做了个操作 diabetes是一个442 1
  • 【FPGA的基础快速入门17------频率计】

    FPGA的基础学习 频率计 频率计简介 等精度频率计 频率计简介 频率计又称为频率计数器 是一种专门对被测信号频率进行测量的电子测量仪器 计数法 直接计数单位时间内被测信号的脉冲数 这种方法测量精度高 速度快 适合不同频率 不同精确度测频的
  • 输入一个四位整数,分别输出组成该四位数的各位数字

    一 代码实现 1 include
  • Spring框架支持哪几种Bean作用域?自动装配Bean有哪些方式?

    Spring框架支持哪几种Bean作用域 spring支持五种Bean作用域 singleton 单例 就是每个spring容器只有一个 实例对象 prototype 多例 一个bean可以定义多个实例 另外三个是在web的Spring A
  • dell服务器启动顺序如何设置_戴尔品牌机怎么设置启动顺序(按F12进bios的)?

    展开全部 这主板非常麻烦 可关了保护 并切换 Legacy启动模式 U盘PE 装完系统 要改回uefi模式 DELL bios操作一32313133353236313431303231363533e59b9ee7ad943133343137
  • 传输线的物理基础(二):信号在传输线中的速度

    铜中电子的速度 信号在传输线上传输的速度有多快 如果人们经常错误地认为信号在传输线上的速度取决于导线中电子的速度 凭着这种错误的直觉 我们可能会想象降低互连的电阻会提高信号的速度 事实上 典型铜线中电子的速度实际上比信号速度慢约 100 亿
  • NLP中的数据增强方法!

    作者简介 大家好我是 uu 人工智能硕博在读 精通python 某大厂nlp算法经历 机器学习 深度学习 自然语言处理 计算机视觉 个人主页 uu主页 觉得uu写的不错的话 麻烦动动小手 点赞 收藏 评论 今天给大家带来的刷题系列是 NLP
  • BUS creator & selector、Mux&Demux

    2 3 总线BUS creator selector Bus Creator 由几路输入信号合成为一条总线信号 Bus Selector 由总线信号中选取需要的一路或几路信号输出 Mux 信号合成 Demux 信号分解 区别 Bus的可选择
  • vue web在线聊天功能实现

    上一篇介绍了vue怎么实现无限滚动窗体 这一篇就具体怎么使用vue实现web在线聊天功能展开深入讨论 对尚且不清楚怎么实现无限滚动窗体的 可前往这里查看 vue和iview实现无限滚动的正确解法 先看看最终实现的效果 实现过程 无限滚动窗体
  • 【ChatGPT进阶】如何使用ChatGPT做知乎好物?

    如果你想通过知乎赚钱 知乎好物是一个不错的选择 门槛很低 而且是一个可以长期 躺赚 的项目 如果你会ChatGPT的话 可以去卷同行 知乎好物是什么 知乎好物是一种在知乎平台上创作内容或回答问题时 使用 好物推荐 功能在内容中插入商品卡片
  • AI绘画StableDiffusion美女实操教程:斗破苍穹-小医仙-天毒女(附高清图下载)

    小医仙 是天蚕土豆所著玄幻小说 斗破苍穹 1 及其衍生作品中的角色 身负厄难毒体 食毒修炼 万毒不侵 通体毒气 这种会无意识地杀死别人的体质让天性善良的小医仙成为人憎鬼厌的天毒女 在萧炎多次帮助下得以控制 出图效果展示 资源整合 今天我们就
  • springboot集成RabbitMQ-超级详细步骤

    本文对应的代码地址 https github com zhangshilin9527 rabbitmq study 前置工作 1 安装rabbitmq 2 登录 地址 http localhost 15672 账号密码 guest gues
  • mybatis学习(31):修改部分字段(有外键,先查询,再修改)

    目录结构 com geyao mybatis mapper BlogMapper类 package com geyao mybatis mapper import java util List import java util Map im