mysql增删改查_使用Java JdbcTemplate对mySQL进行CRUD增删改查操作

create方法:用字符串拼接构造一个SQL命令:"insert into Student (name, age) values (?, ?)"

然后传入jdbcTemplateObject, 后者基于一个定义在Beans.xml里的bean创建的:

07c196fe00dac777f81809ac12938b8f.png
a05d607e8eb4d45f9e3da830bd7b082a.png

而jdbcTemplate是包org.springframework.jdbc.core里提供的api:

263b8a729ede37e792f0b299d88e3c6e.png

# 批量读取

和创建接口不同,批量读取需要给Java layer返回数据,所以需要一个Mapper:StudentMapper

b5a1bafa9ae80ee845f027b5339d51f1.png

具体执行逻辑,和ABAP的ADBC原理类似,首先获得数据库连接: DataSourceUtils.getConnection

463945bc44c2b18640f50d0be52a2e14.png

此处获得从Beans.xml里注入的datasource bean:

0a1aa8e874d4d4d12e1a2ab0dc2134e4.png

基于DataSource拿到一个connection:

3e8af991e5b13f0eb3a84e5649e8fedc.png

真正的执行发生在doInStatement方法内,属于类JdbcTemplate:

23c6cd7c6fbbc15d256d6cd973b595fe.png

我们应用程序里定义的RowMapper是在一个while循环里被回调的:

89506b3d47c0ff80c14a06539c35785e.png

单步调试,进入我们自己编写的RowMapper:

c26210bc815ba1b4f0c750918629cd0a.png

getInt的实现:

986e9ffd07fe40e8a78f51192564423f.png

每一行的column数据以byte的方式存储在internal数组里:

8fc7e582ab753083edb3a60c59fc85f8.png

这就是get操作的完整流程:

72de3ef43a615868256c66d32149187f.png
Java连接数据库的增删改查可以通过使用JdbcTemplate来实现。首先,你需要配置数据源,确保能够连接到数据库。在配置文件中设置数据库的驱动类、URL、用户名和密码。 接下来,你需要创建数据库和表。可以通过运行SQL语句来创建数据库和表,例如创建一个名为testdb的数据库并在其中创建一个名为user的表。 然后,你可以在数据访问层(DAO)进行增删改查操作。可以先创建一个接口,定义对数据库的基本增删改查操作,然后创建一个实现类,使用JdbcTemplate来实现这些操作。 如下是一个简单的示例: ```java // 配置数据源 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=123456 // 创建数据库和表 DROP DATABASE IF EXISTS `testdb`; create database testdb; Use testdb; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户 ID', `user_name` varchar(255) DEFAULT NULL COMMENT '用户名', `status` varchar(255) DEFAULT NULL COMMENT '用户状态', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; // 数据访问层DAO // 接口CRUD public interface UserDao { User getById(int id); List<User> getAll(); void insert(User user); void update(User user); void delete(int id); } // DAO层实现类--JdbcTemplate @Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public User getById(int id) { String sql = "SELECT * FROM user WHERE user_id = ?"; return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class)); } @Override public List<User> getAll() { String sql = "SELECT * FROM user"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class)); } @Override public void insert(User user) { String sql = "INSERT INTO user (user_name, status) VALUES (?, ?)"; jdbcTemplate.update(sql, user.getUserName(), user.getStatus()); } @Override public void update(User user) { String sql = "UPDATE user SET user_name = ?, status = ? WHERE user_id = ?"; jdbcTemplate.update(sql, user.getUserName(), user.getStatus(), user.getUserId()); } @Override public void delete(int id) { String sql = "DELETE FROM user WHERE user_id = ?"; jdbcTemplate.update(sql, id); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值