JDBC连接MySql数据库时,setObject方法是干什么的?

这篇博客介绍了PreparedStatement的setObject()方法在SQL语句中的应用,用于设置参数占位符的值,以简化不同数据类型的赋值过程。通过示例展示了如何使用setObject()进行插入和查询操作,提高代码的效率和便捷性。同时,讲解了JDBC作为Java数据库连接的API,它是如何提供对多种数据库的统一访问的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ps = connection.prepareStatement(" SELECT id,NO,NAME,gender,gradeid,phone,address FROM student WHERE id = ? ");  //?:占位符
 ps.setObject(1,id);    //给第一个占位符赋值:id

1、 setObject()方法作用:

给SQL语句的占位符赋值的。

2、为什么要用setObject?

也有setString()方法,setIne()方法 …但是如果类似下面,数据很多,类型不一致,这样就需要一个一个判断,就很麻烦,所以直接使用setObject()方法,因为它可以自动识别数据类型,就很方便,提高了效率。

 ps = connection.prepareStatement("INSERT INTO student(NO,NAME,gender,gradeid,phone,address,reg_time,userid)VALUES(?,?,?,?,?,?,?,?)");
            ps.setObject(1,no);
            ps.setObject(2,name);
            ps.setObject(3,gender);
            ps.setObject(4,gradeid);
            ps.setObject(5,phone);
            ps.setObject(6,address);
            ps.setObject(7,new Date());
            ps.setObject(8,id);

扩展知识:

JDBC(Java Data Base Connectivity,java数据库连接)
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

API(应用程序接口 Application Programming Interface)

### 关于 `setSuperEntityClass` 的使用方法 `setSuperEntityClass` 是 MyBatis-Plus 中代码生成器的一个重要配置项,用于设置实体类的父类。通过该功能,开发者可以在生成的 Entity 类中继承指定的基类,从而实现通用字段的复用和统一管理。 #### 1. **基本概念** 在 MyBatis-Plus 的代码生成器中,`setSuperEntityClass` 方法允许用户指定生成的 Entity 类所继承的父类。这通常用于项目中有多个实体类共享相同的基础字段的情况,比如创建间 (`createTime`) 和更新间 (`updateTime`) 等[^1]。 #### 2. **具体使用方法** 以下是 `setSuperEntityClass` 的典型使用场景: ```java // 创建代码生成器对象 AutoGenerator mpg = new AutoGenerator(); // 设置数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/test"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("password"); mpg.setDataSource(dsc); // 设置全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); // 输出目录 gc.setAuthor("Your Name"); // 作者名称 gc.setOpen(false); // 是否打开输出目录 mpg.setGlobalConfig(gc); // 设置包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.example.demo"); // 父包名 mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig((tableInfo) -> { Map<String, Object> map = new HashMap<>(); return map; }); // 实体策略配置 EntityStrategyConfig esc = new EntityStrategyConfig(); esc.setSuperEntityClass("com.example.demo.base.BaseEntity"); // 设置父类 esc.setSuperEntityColumns("create_time", "update_time"); // 设置父类中的公共字段 mpg.setStrategy(new StrategyConfig().setEntityColumnConstant(true).setRestControllerStyle(true)); // 执行生成 mpg.execute(); ``` #### 3. **注意事项** - **父类路径**: 需要确保 `BaseEntity` 已经存在于项目的指定路径下,并且包含了所需的通用字段。 - **字段映射**: 如果父类中存在某些字段,则这些字段不会被重复生成到子类中。因此,在设计父类需谨慎考虑哪些字段适合放入其中[^4]。 - **版本兼容性**: 不同版本的 MyBatis-Plus 可能会对 API 进行调整,建议查阅官方文档确认当前使用的版本是否支持此方法及其参数变化[^2]。 #### 4. **常见问题及解决方案** - **Q:** 如何处理父类中的字段未正确映射至数据库? - A: 检查父类字段是否有对应的注解(如 `@TableField`),并确保其属性与实际表结构一致[^3]。 - **Q:** 子类无法识别来自父类的方法或属性怎么办? - A: 确认父类已正确定义相关成员变量及 getter/setter 方法;另外还需验证编译环境是否存在冲突或遗漏引入必要的依赖库。 --- ### 示例代码片段展示如何自定义超级实体类 假设我们有一个基础实体类如下所示: ```java public class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; @TableField(value = "create_time") private Date createTime; @TableField(value = "update_time") private Date updateTime; public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } } ``` 接着可以通过调用 `setSuperEntityClass(BaseEntity.class)` 将所有新生成的 entity 继承自此 base class 上述提到的方式即可完成操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码元宋大米

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值