
Spring框架对JDBC进行封装,使用JdbcTemplate方便对数据库的操作。
操作准备:
1.导入相关依赖,文末附下载链接。

2.创建数据库,便于使用。以在mysql数据库中创建user_db为例。

3.配置xml文件,添加数据库连接相关信息,如密码用户名等。(连接池的配置)

4.配置JdbcTemplate对象,注入DataSource。

5.创建一个Service类,创建Dao类,在Dao类中注入jdbcTemplate对象。需要开启组件扫描,完整的spring配置文件如下:

6.在各类上添加对应的注解。


至此,准备工作就完成啦!
1.在user_db数据库中创建t_user表,sql语句如下:
CREATE TABLE t_user(user_id BIGINT PRIMARY KEY NOT NULL ,username VARCHAR(100) NOT NULL ,ustatus VARCHAR(50) NOT NULL
)
2.新建一个包entity用于存放实体类,创建t_user表对应的实体类User,并添加相应的set、get方法。

3.编写service和dao,在dao中进行数据库的添加操作。 UserDao接口声明add方法,UserService进行添加操作,而 UserDaoImp具体实现数据库的添加操作。 需要使用jdbcTemplate的update方法。

第一个参数为编写的sql语句,第二个参数为可变参数,用于设置值。

具体代码如下:
UserDao
import com.ithxh.spring5.entity.User;/*** @author 兴趣使然黄小黄* @version 1.0*/
public interface UserDao {void add(User user);
}
UserDaoImp
import com.ithxh.spring5.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;/*** @author 兴趣使然黄小黄* @version 1.0*/
@Repository
public class UserDaoImp implements UserDao{//注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;//实现添加的方法@Overridepublic void add(User user) {//编写sql语句String sql = "insert into t_user values(?,?,?)";//调用方法实现Object[] args = {user.getUserId(), user.getUsername(), user.getUstatus()};int update = jdbcTemplate.update(sql, args);//返回影响行数System.out.println("影响的行数: " + update);}
}
UserService
import com.ithxh.spring5.dao.UserDao;
import com.ithxh.spring5.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author 兴趣使然黄小黄* @version 1.0*/
@Service
public class UserService {//注入dao@Autowiredprivate UserDao userDao;//添加的方法public void addUser(User user){userDao.add(user);}
}
4.编写测试类,尝试给表添加数据。
@Testpublic void testJdbcTemplate(){ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");UserService userService = context.getBean("userService", UserService.class);User user = new User();user.setUserId("120");user.setUsername("黄小黄");user.setUstatus("true");userService.addUser(user);}


修改与删除操作大体与添加操作一致,只需要修改相应的sql语句。这里对核心代码进行简述:
修改和删除操作
UserDaoImp中实现修改和删除的方法
//实现修改的方法@Overridepublic void update(User user) {String sql = "update t_user set user_id = ?, username = ?, ustatus = ?";Object[] args = {user.getUserId(), user.getUsername(), user.getUstatus()};int update = jdbcTemplate.update(sql, args);System.out.println("影响的行数: " + update);}//实现删除的方法@Overridepublic void delete(String id) {String sql = "delete from t_user where user_id = ?";int update = jdbcTemplate.update(sql, id);System.out.println(update);}
需要注意,UserDao应该对修改和删除方法进行声明,UserService中则需要像这样,调用UserDaoImp中的方法:

测试修改:
@Testpublic void testJdbcTemplate(){ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");UserService userService = context.getBean("userService", UserService.class);User user = new User();user.setUserId("111");user.setUsername("懒羊羊");user.setUstatus("true");userService.updateUser(user);}

测试删除:
@Testpublic void testJdbcTemplate(){ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");UserService userService = context.getBean("userService", UserService.class);String id = "111";userService.deleteUser(id);}

示例:查询表中有多少条记录,返回的是一个值,表示表中数据的条数
//查询有多少条记录@Overridepublic int findCountUser() {String sql = "select count(*) from t_user";Integer res = jdbcTemplate.queryForObject(sql, Integer.class);//第二个参数是返回值类型return res;}
示例:查询用户详细信息。
通过jdbcTemlate中的queryForObject方法实现:

首先先在数据库中t_user表插入如下信息:
INSERT INTO t_user VALUES (111, '黄小黄', 'true');
INSERT INTO t_user VALUES (222, '懒羊羊', 'true');
在UserDao中声明,UserDaoImp中实现查询方法,UserService使用:
//查询返回对象@Overridepublic User findUserInfo(String id) {String sql = "select * from t_user where user_id = ?";User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(User.class), id);return user;}
查询测试:
@Testpublic void testJdbcTemplate(){ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");UserService userService = context.getBean("userService", UserService.class);User one = userService.findOne("111");System.out.println(one);}

与返回对象类似,这里以查询user信息为例,返回t_user中的所有记录
通过jdbcTemlate中的query方法实现:

在UserDao中声明,UserDaoImp中实现查询方法,UserService使用:
//查询返回集合@Overridepublic List findAllUser() {String sql = "select * from t_user";List userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper(User.class));return userList;}
测试并遍历:
@Testpublic void testJdbcTemplate(){ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");UserService userService = context.getBean("userService", UserService.class);List userList = userService.findAll();for (User user :userList) {System.out.println(user);}}

对表中多条记录进行操作,批量操作主要通过javaTemplate中的batchUpdate方法实现

UserDaoImp类中批量添加的代码如下:
//批量添加@Overridepublic void batchAddUser(List
测试类中批量添加:
@Testpublic void testJdbcTemplate(){ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");UserService userService = context.getBean("userService", UserService.class);//向表中添加三条记录List


批量修改与批量删除与批量添加类似,只需要更改相应的sql语句,这里只展示核心代码:
批量修改
//批量修改@Overridepublic void batchUpdate(List
批量删除
//批量删除@Overridepublic void batchDelete(List
至此,使用JdbcTemplate进行数据库简单的增删改查操作已经讲解完了,下一节将会继续讲解有关事务的操作,JdbcTemplate实验相关环境依赖已经上传,下载链接附上:druid-1.1.9.jar+mysql-connector-java-8.0.29.jar等JdbcTempate操作资源

上一篇:矩阵论复习提纲