Java Spring5学习之JdbcTemplate详解

作者:不善言谈者 时间:2023-11-25 20:17:23 

一、JdbcTemplate

Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

二、实战

2.1 引入依赖


<dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.24</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.3.6</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-orm</artifactId>
           <version>5.3.6</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-tx</artifactId>
           <version>5.3.6</version>
       </dependency>

2.2 配置连接池


<!--引入外部属性文件 -->
   <context:property-placeholder
       location="classpath:jdbc.properties" />

<!-- 数据库连接池 -->
   <bean id="dataSource"
       class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
       <property name="url" value="${prop.url}" />
       <property name="username" value="${prop.userName}" />
       <property name="password" value="${prop.password}" />
       <property name="driverClassName" value="${prop.driverClass}" />
   </bean>

2.3 配置JdbcTemplate 对象,注入 DataSource


<!-- JdbcTemplate 对象 -->
   <bean id="jdbcTemplate"
       class="org.springframework.jdbc.core.JdbcTemplate">
       <!--注入 dataSource -->
       <property name="dataSource" ref="dataSource"></property>
   </bean>

2.4 扫描注解


<!-- 开启注解扫描 -->
   <context:component-scan
       base-package="cn.zj.aop.an"></context:component-scan>

2.5 创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象


@Repository
public class UserDaoImpl implements UserDao {

//注入 JdbcTemplate
   @Autowired
   private JdbcTemplate jdbcTemplate;
}

@Service
public class UserService {

// 注入 dao
   @Autowired
   private UserDao userDao;

}

三、操作(CRUD)

实体类


public class User {

private String userId;
   private String username;
   private String ustatus;

@Override
   public String toString() {
       return "User [userId=" + userId + ", username=" + username + ", ustatus=" + ustatus + "]";
   }

public String getUserId() {
       return userId;
   }

public void setUserId(String userId) {
       this.userId = userId;
   }

public String getUsername() {
       return username;
   }

public void setUsername(String username) {
       this.username = username;
   }

public String getUstatus() {
       return ustatus;
   }

public void setUstatus(String ustatus) {
       this.ustatus = ustatus;
   }

}

3.1 添加


service
//添加
   public void addUser(User user) {
       userDao.add(user);
   }

dao
@Override
   public void add(User user) {
       // 1 创建 sql 语句
       String sql = "insert into t_user values(?,?,?)";
       // 2 调用方法实现
       Object[] args = { user.getUserId(), user.getUsername(), user.getUstatus() };
       int update = jdbcTemplate.update(sql, args);
       System.out.println(update);

}

测试

@Test
   public void test1() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       User user = new User();
       user.setUserId("1");
       user.setUsername("java");
       user.setUstatus("a");
       userService.addUser(user);
   }

结果

Java Spring5学习之JdbcTemplate详解

3.2 修改


service

//修改
   public void updateUser(User user) {
       userDao.updateUser(user);
   }

dao
@Override
   public void updateUser(User user) {
       // TODO Auto-generated method stub
       String sql = "update t_user set username=?,ustatus=? where userId=?";
       // 2 调用方法实现
       Object[] args = { user.getUsername(), user.getUstatus() ,user.getUserId()};
       int update = jdbcTemplate.update(sql, args);
       System.out.println(update);
   }
测试
@Test
   public void test2() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       User user = new User();
       user.setUserId("1");
       user.setUsername("javaScrip");
       user.setUstatus("abc");
       userService.updateUser(user);
   }

Java Spring5学习之JdbcTemplate详解

3.3 删除


// 删除
   public void deleteUser(String id) {
       userDao.deleteUser(id);
   }

@Override
   public void deleteUser(String id) {
       String sql="delete from t_user where userId=?";
       int update=jdbcTemplate.update(sql, id);
       System.out.println(update);
   }

@Test
   public void test3() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);

userService.deleteUser("1");
   }

Java Spring5学习之JdbcTemplate详解

四、查询

4.1 查询总记录数 jdbcTemplate.queryForObject


@Test
   public void test4() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);

int count = userService.selectUserCount();
       System.out.println("数据库中共有记录:"+count);
   }

//查询记录数
   public int  selectUserCount() {
       return userDao.selectCount();
   }

@Override
   public int selectCount() {
       String sql = "select count(0) from t_user";
       Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
       return count;
   }

4.2 查询返回对象


@Test
   public void test5() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);

User user=userService.findUserInfo("1");
       System.out.println(user);
   }

//查询对象
   public User findUserInfo(String id) {
       // TODO Auto-generated method stub
       return userDao.findUserInfo(id);
   }

@Override
   public User findUserInfo(String id) {
       String sql = "select userId,username,ustatus from t_user where userId=?";
       User user = jdbcTemplate.queryForObject(sql, new
               BeanPropertyRowMapper<User>(User. class),id);
       return user;
   }

4.3 查询返回集合


@Test
   public void test6() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);

List<User> list=userService.findAllUser();
       System.out.println(list);
   }

//查询返回集合
   public List<User> findAllUser(){
       return userDao.findAllUser();
   }

@Override
   public List<User> findAllUser() {
       String sql = "select userId,username,ustatus from t_user";
       List<User> list = jdbcTemplate.query(sql, new
               BeanPropertyRowMapper<User>(User. class));
       return list;
   }

五、批量操作 jdbcTemplate.batchUpdate

5.1 添加


@Test
   public void test7() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<Object[]> list =  new ArrayList<>();
       Object[] o1 = { "11", "易语言", "中文"};
       Object[] o2 = { "12", "c++", "cc"};
       Object[] o3 = { "13", "MySQL", "数据库"};
       list.add(o1);
       list.add(o2);
       list.add(o3);
       userService.batchAdd(list);
   }

//批量添加
   public void batchAdd(List<Object[]> list){
       userDao.batchAdd(list);
   }

@Override
   public void batchAdd(List<Object[]> list) {
       String sql = "insert into t_user values(?,?,?)";
       int[] ints = jdbcTemplate.batchUpdate(sql, list);
       System.out.println(ints);
   }

5.2 修改


@Test
   public void test8() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<Object[]> list =  new ArrayList<>();
       Object[] o1 = {  "易语言易", "中文语言","11"};
       Object[] o2 = { "c++c", "ccccc","12"};
       Object[] o3 = {"MySQL+ORACle", "数据库数据", "13"};
       list.add(o1);
       list.add(o2);
       list.add(o3);
       userService.batchUpdate(list);
   }

//批量修改
   public void batchUpdate(List<Object[]> list) {
       userDao.batchUpdate(list);
   }

@Override
   public void batchUpdate(List<Object[]> list) {
       String sql = "update t_user set username=?,ustatus=? where userId=?";
       int[] ints = jdbcTemplate.batchUpdate(sql, list);
       System.out.println(ints);
   }

5.3 删除


@Test
   public void test9() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<Object[]> list =  new ArrayList<>();
       Object[] o1 = { "11"};
       Object[] o2 = { "12"};
       Object[] o3 = { "13"};
       list.add(o1);
       list.add(o2);
       list.add(o3);
       userService.batchDelete(list);
   }

//批量删除
   public void batchDelete(List<Object[]> list) {
       userDao.batchDelete(list);
   }

@Override
   public void batchDelete(List<Object[]> list) {
       String sql = "delete from t_user where userId=?";
       int[] ints = jdbcTemplate.batchUpdate(sql, list);
       System.out.println(ints);
   }

来源:https://blog.csdn.net/bushanyantanzhe/article/details/116403535

标签:Java,Spring5,JdbcTemplate
0
投稿

猜你喜欢

  • Android中的存储详解

    2022-11-17 02:36:46
  • Java中对象的比较操作实例分析

    2023-03-05 03:58:09
  • Mybatis日志参数快速替换占位符工具的详细步骤

    2023-09-30 21:29:36
  • 简单实现Android倒计时效果

    2022-03-26 01:58:14
  • java根据List内对象的属性排序方法

    2022-10-25 10:05:44
  • Java判断变量是否为空问题的方法总结

    2023-02-03 12:23:09
  • Java实现学生管理系统(控制台版本)

    2023-04-11 04:12:05
  • 详解Maven profile配置管理及激活profile的几种方式

    2022-07-01 08:54:46
  • c# 对cookies(增、删、改、查)的操作方法

    2023-08-10 06:24:48
  • Android Apk反编译及加密教程

    2022-01-13 01:01:25
  • java线程池参数位置导致的夺命故障宿主机打不开

    2021-09-29 23:27:34
  • Android短信备份及数据插入实现代码解析

    2023-07-25 02:41:12
  • Android实现轮播图片效果

    2023-07-08 02:20:24
  • Java读取json数据并存入数据库的操作代码

    2023-09-23 06:00:57
  • Android编程中HTTP服务用法详解

    2022-06-14 02:08:43
  • Java常用时间工具类总结(珍藏版)

    2022-04-23 18:38:31
  • Java实现简单的扫雷小程序

    2022-11-18 02:14:07
  • android预置默认的语音信箱号码具体实现

    2022-08-22 07:51:59
  • kotlin 协程上下文异常处理详解

    2022-09-30 06:32:52
  • Java多线程:生产者与消费者案例

    2021-06-30 05:47:08
  • asp之家 软件编程 m.aspxhome.com