库里斯托 2023-09-26 21:58 采纳率: 87.6%
浏览 5
已结题

打印数据库怎么有的是空的怎么回事(相关搜索:静态方法|输入流)

package com.itheima;

import com.itheima.entiy.Brand;
import com.itheima.mapper.BrandMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
//快速入门
public class MytabisApplication {
    public static void main(String[] args) throws IOException {
        //1.加载核心配置文件,获取SqlSessionFactory 对象
        String resource = "mybatis-config.xml";    //定义了配置文件的路径
        InputStream inputStream = Resources.getResourceAsStream(resource);//然后通过Resources这个对象提供的静态方法去接收核心配置文件的路径,返回了一个字节输入流,赋给了inputStream
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//然后SqlSessionFactoryBuilder这个对象的方法去接收inputStream这个流,会返回一个SqlSessionFactory类型的对象,赋给sqlSessionFactory
        //到现在,这个"工厂"就建好了,然后就要去获取SqlSession的对象,进行处理
        //2.获取SqlSession对象,用它来执行sql语句
        SqlSession sqlSession = sqlSessionFactory.openSession();//sqlSessionFactory这个对象的openSession()方法会返回一个SqlSession对象
        //3.执行sql语句
        //List<User> users = sqlSession.selectList("test.selectAll");//传入名称空间+sql的标识。这个方法会返回一个list类型的对象
        //3.1获取UserMapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);//传入UserMapper这个接口名,返回UserMapper接口的代理对象
        //全部查询
        List<Brand> brands = brandMapper.selectAll();
        System.out.println(brands);

       //插入
        Brand brand = new Brand();
        brand.setId(5);
        brand.setStatus(1);
        brand.setCompanyName("dwa");
        brand.setBrandName("daw");
        brand.setDescription("dawdawd");
        brand.setOrdered(100);
        brandMapper.add(brand);

        //删除
        //修改
        //4.释放资源
        sqlSession.close();
    }
}
package com.itheima.entiy;

public class Brand {
    // id 主键
    private Integer id;
    // 品牌名称
    private String brandName;
    // 企业名称
    private String companyName;
    // 排序字段
    private Integer ordered;
    // 描述信息
    private String description;
    // 状态:0:禁用  1:启用
    private Integer status;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBrandName() {
        return brandName;
    }

    public void setBrandName(String brandName) {
        this.brandName = brandName;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public Integer getOrdered() {
        return ordered;
    }

    public void setOrdered(Integer ordered) {
        this.ordered = ordered;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Brand{" +
                "id=" + id +
                ", brandName='" + brandName + '\'' +
                ", companyName='" + companyName + '\'' +
                ", ordered=" + ordered +
                ", description='" + description + '\'' +
                ", status=" + status +
                '}';
    }
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.BrandMapper">
    
    <select id="selectAll" resultType="com.itheima.entiy.Brand">
        select * from tb_brand;
    </select>
    <insert id="add">
       insert into tb_brand (brand_name,company_name,ordered,description,status)
        values (#{brandName},#{companyName},#{ordered},#{description},#{status});
    </insert>
    <update id="update">
        update tb brand
        set brand_name = #{brandName},
        company_name =#{companyName},
        ordered = #{ordered},
        description =#{description},
        status = #{status}
        where id = #{id};
    </update>
</mapper>

img

img


打印数据库怎么有的是空的怎么回事?看了半天没看出哪有问题

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-27 08:28
    关注

    【相关推荐】



    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7691183
    • 这篇博客也不错, 你可以看下什么是数据库的事务,数据库的事务有哪些?一篇短文带你了解
    • 您还可以看一下 唐向荣老师的微信小程序全方位深度解析课程中的 小程序事件处理详解小节, 巩固相关知识点
    • 除此之外, 这篇博客: 对于数据库的总结中的  关于是数据库事务: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      保证多条SQL要么全成功,否则全失败

      四个特性:

      原子性:多条SQL是一个密不可分的整体

      一致性:分布式系统里,数据的一致性

      隔离性:数据库支持高并发,使用了锁的机制保证了数据的安全

      持久性:是指对数据的增删改是持久生效的

      隔离级别

      读未提交:read uncommitted:读未提交, 安全性最差,但是效率高 (会产生脏读问题,在项目中基本不怎么用)

      读已提交:read committed:读已提交, 安全性较好,但是效率较差,也是Oracle的默认级别(

      会避免脏读问题;
      由于一个事务可以看到别的事务已经提交的数据,于是随之而来产生了不可重复读和虚读等问题

      可重复读:repeatable read:可重复读,安全性适中,但是效率一般,也是MySQL的默认级别(它确保了一个事务中多个实例在并发读取数据的时候会读取到一样的数据;不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。)

      串行化:serializable:串行化,安全性最高,但是效率太差(通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争,一般为了提升程序的吞吐量不会采用这个;)


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 创建了问题 9月26日

悬赏问题

  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测