文章目录
数据库开发:基本操作(增、删、改)
① 准备工作
-
1.引入相关jar包:
-
2.Spring配置文件中配置数据库连接池:
-
3.配置 JdbcTemplate 对象,注入 DataSource
-
4.创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
② 数据库操作 — 增[insert] update()
1、对应数据库创建实体类
- 创建数据库表
t_user
- 在
User类
中,我们将t_user表
的各字段设为类的属性,方便后续操作中值的赋予、获取。
package JDBC.entry;
public class User {
// 创建字段对应属性
private String useId;
private String userName;
private String uststus;
// set\get方法
public String getUseId() {
return useId;
}
public void setUseId(String useId) {
this.useId = useId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUststus() {
return uststus;
}
public void setUststus(String uststus) {
this.uststus = uststus;
}
}
2、编写 service 和 dao
-
(1)在 dao 进行数据库添加操作(接口实现类重写具体实现)
-
(2)具体实现的时候,调用 JdbcTemplate 对象里面
update()
方法实现添加操作
- 第一个参数:
sql 语句
- 第二个参数:可变参数,设置
sql 语句值
- 第一个参数:
-
(3)SQL增加语句:
insert into 表名 values (value1,value2,value3)
@Repository
public class UserDaoImpl implements UserDao {
// 注入JdbcTemplate对象
@Autowired
private JdbcTemplate jdbcTemplate;
// 重写add方法
@Override
public void add(User user) {
// sql语句
String sql = "insert into t_user values(?,?,?)";
// 可变数组保存sql语句插入值
Object[] args = {
user.getUseId(), user.getUserName(), user.getUststus()};
// 调用方法实现数据库信息插入
int update = jdbcTemplate.update(sql,args);
System.out.println("插入操作影响的记录数:"+ update);
}
}
- 流程:
3、测试类
- 在测试类中,获取
userService对象
后,调用addUser()
方法传入user对象。在这之前,首先创建user对象,并通过user.setXxx()
方法,对各字段进行赋值。
@org.junit.Test
public void test_jdbc(){
try {
// 1.获取配置文件对象
ApplicationContext context = new ClassPathXmlApplicationContext("JDBC/bean_jdbc.xml");
UserService userService = context.getBean("userService",UserService.class);
// 创建user对象,设置属性
User user = new User();
// user.setUseId("1");
user.setUseId("2");
user.setUserName("Vae");
// user.setUststus("creating");
user.setUststus("singing");
// 调用方法
userService.addUser(user);
} catch (Exception e){
e.printStackTrace();
}
}
③ 数据库操作 — 删[delete] update()
1.编写service和dao
- 记录的删除我们可以通过记录的
id
来完成,所以在deleteUser()
中参数传入的是要被删除的记录的id
。 - SQL删除语句:
delete from 表名 where 字段1=value1
public interface UserDao {
// 添加用户的方法
void add(User user);
// 修改用户的方法
void updateUser(User user);
// 删除用户记录
void deleteUser(String id);
}
@Service
public class UserService {
// 注入UserDao对象属性
@Autowired
private UserDao userDao;
// 添加用户
public void addUser(User user){
userDao.add(user);
}
// 修改用户
public void updateUser(User user){
userDao.updateUser(user);
}
// 删除用户
public void deleteUser(String id){
userDao.deleteUser(id);
}
}
2.编写实现类,具体实现数据库记录删除
@Repository
public class UserDaoImpl implements UserDao {
// 注入JdbcTemplate对象
@Autowired
private JdbcTemplate jdbcTemplate;
// 重写add方法
@Override
public void add(User user) {
// sql语句
String sql = "insert into t_user values(?,?,?)";
// 可变数组保存插入值
Object[] args = {
user.getUseId(), user.getUserName(), user.getUststus()};
// 调用方法实现数据库信息插入
int insert = jdbcTemplate.update(sql,args);
System.out.println("插入操作影响的记录数:"+ insert);
}
// 重写updateuser方法
@Override
public void updateUser(User user) {
// sql语句
String sql = "update t_user set username=?,ustatus=? where user_id=?";
// 可变数组保存修改值
Object[] args = {
user.getUserName(),user.getUststus(),user.getUseId()};
// 调用方法实现数据库信息修改
int update = jdbcTemplate.update(sql,args);
System.out.println("插入操作影响的记录数:"+ update);
}
// 删除用户记录
@Override
public void deleteUser(String id) {
// sql语句
String sql = "delete from t_user where user_id=?";
// 调用方法实现数据库信息删除
int delete = jdbcTemplate.update(sql,id;
System.out.println("插入操作影响的记录数:"+ delete);
}
}
3.测试类
@org.junit.Test
public void test_jdbc(){
try {
ApplicationContext context = new ClassPathXmlApplicationContext("JDBC/bean_jdbc.xml");
UserService userService = context.getBean("userService",UserService.class);
// 创建user对象,设置属性
User user = new User();
user.setUseId("3");
user.setUserName("Vae");
user.setUststus("dancing");
// 调用方法增加用户
userService.addUser(user);
// 调用方法删除用户
userService.deleteUser("2");
} catch (Exception e){
e.printStackTrace();
}
}
在这里我们先进行了一条记录的插入,然后删除了表中的id为2的记录,所以现在表中剩下的是1、3记录。
④ 数据库操作 — 改[update] update()
1.编写service和dao
- 实现用户信息更改的时候,我们也采取通过id进行修改的策略。
- SQL修改语句:
update 表名 set 字段1=value1,字段2=value2 where 字段3=value3
public interface UserDao {
// 添加用户的方法
void add(User user);
// 修改用户的方法
void updateUser(User user);
}
@Service
public class UserService {
// 注入UserDao对象属性
@Autowired
private UserDao userDao;
// 添加用户
public void addUser(User user){
userDao.add(user);
}
// 修改用户
public void updateUser(User user){
userDao.updateUser(user);
}
}
2.编写实现类,具体实现数据库修改
@Repository
public class UserDaoImpl implements UserDao {
// 注入JdbcTemplate对象
@Autowired
private JdbcTemplate jdbcTemplate;
// 重写add方法
@Override
public void add(User user) {
// sql语句
String sql = "insert into t_user values(?,?,?)";
// 可变数组保存插入值
Object[] args = {
user.getUseId(), user.getUserName(), user.getUststus()};
// 调用方法实现数据库信息插入
int insert = jdbcTemplate.update(sql,args);
System.out.println("插入操作影响的记录数:"+ insert);
}
// 重写updateuser方法
@Override
public void updateUser(User user) {
// sql语句
String sql = "update t_user set username=?,ustatus=? where user_id=?";
Object[] args = {
user.getUserName(),user.getUststus(),user.getUseId()};
// 调用方法实现数据库信息修改
int update = jdbcTemplate.update(sql,args);
System.out.println("插入操作影响的记录数:"+ update);
}
}
3.测试类
@org.junit.Test
public void test_jdbc(){
try {
ApplicationContext context = new ClassPathXmlApplicationContext("JDBC/bean_jdbc.xml");
UserService userService = context.getBean("userService",UserService.class);
// 创建user对象,设置属性
User user = new User();
// 调用方法修改用户
user.setUseId("3"); // 根据id进行修改
user.setUserName("VAE");
user.setUststus("singing");
userService.updateUser(user);
} catch (Exception e){
e.printStackTrace();
}
}
通过id为3对其用户信息进行修改:username
改为大写
,status
改为singing
。
注意:
1.本文中的数据库实体类需要进行更正:对应字段属性需重新命名userId
、userName
、userStatus
(其中用到的查询语句也都需要更改)。
2.数据库中设计的表t_user也需要更改为:
参见本人博客:jdbcTemplate.queryXxx() 返回值为null