`SSM`(Spring+MyBatis)框架中的`JdbcTemplate`是Spring JDBC模板,它封装了基本的JDBC操作

SSM(Spring+MyBatis)框架中的JdbcTemplate是Spring JDBC模板,它封装了基本的JDBC操作,简化了与数据库交互的过程。以下是一些JdbcTemplate的常用操作:

  1. 数据库连接初始化:

    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
    JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    
  2. 删除操作:

    @Test
    public void testDelete(){
         
        jdbcTemplate.update("delete from account where name=?", "小C");
    }
    

    这里通过update方法执行SQL语句来删除满足条件的数据。

  3. 更新操作:

    @Test
    public void testUpdate(){
         
        jdbcTemplate.update("update account set money=? where name=?", 100000, "小C");
    }
    

    update用于更新表中的记录。

  4. 查询操作:

    • 简单查询计数:
      String sql = "select count(*) from user";
      Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
      System.out.println(count);
      
    • 查询并获取列表:
      String sql = "select name from user where id > ?";
      List<String> name = jdbcTemplate.queryForList(sql, String.class, "1");
      System.out.println(name);
      

    queryForObject用于单条结果查询,而queryForList则适用于返回多个结果的情况。

这些操作展示了JdbcTemplate如何以更加简洁的方式处理数据库操作,避免直接编写复杂的JDBC代码。使用@Autowired可以自动注入到Spring容器管理的对象中,方便单元测试。

  • jdbcExample
  • 简单的分层:
  • entity:数据对象层
  • dao: 数据访问层
  • service:领域模型层
  • 业务流程层
    SSM(Spring+MyBatis)框架中的JdbcTemplate简化了Spring应用与JDBC的交互,它是Spring JDBC模块的一部分。这个模板提供了一种更高级别的API来执行常见的数据库操作,比如查询、更新和删除,而无需显式管理连接和结果集。

下面是一个简单的示例演示如何使用JdbcTemplate执行插入操作:

@Autowired
private JdbcTemplate jdbcTemplate;

public void insertCoupon(CouponEntity coupon) {
   
    String sql = "INSERT INTO coupons (user_id, type, expires) VALUES (?, ?, ?)";
    
    // 使用PreparedStatement防止SQL注入
    jdbcTemplate.update(sql, 
        coupon.getUserId(), 
        coupon.getType(), 
        coupon.getExpires());
}

在这个例子中,jdbcTemplate自动负责处理连接打开、关闭以及预编译语句的设置,使得开发者可以专注于业务逻辑,而不是底层的JDBC细节。

在SSM架构中,MyBatis的作用主要体现在简化数据库操作上。它通过将接口和Java对象(POJOs,Plain Ordinary Java Objects,即普通Java类)映射到数据库表结构,使得开发者可以使用简单易懂的SQL语句或注解来进行数据库的操作,如查询、插入、更新和删除。这不仅提高了开发效率,还降低了代码与数据库之间的耦合度,有利于后期的维护和扩展。具体来说,MyBatis允许开发者通过编写SQL模板(XML或注解),然后通过调用这些接口的方法执行相应的数据库操作。例如,通过配置文件指定一个接口方法对应哪种SQL语句,MyBatis会自动处理数据绑定和结果集的返回。

package com.ssm.chapter12.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.ssm.chapter12.pojo.Role;

public class JdbcExample {
   
	
	public Role getRole(Long id) {
   
		Role role = null;
		// 声明JDBC变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
   
			// 注册驱动程序
			Class.forName("com.mysql.jdbc.Driver");
			// 获取连接
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/chapter12", "root", "123456");
			// 预编译SQL
			ps = con.prepareStatement("select id, role_name, note from t_role where id = ?");
			// 设置参数
			ps.setLong(1, id);
			// 执行SQL
			rs = ps.executeQuery();
			// 组装结果集返回POJO
			while (rs.next()) {
   
				role = new Role();
				role.setId(rs.getLong(1));
				role.setRoleName(rs.getString(2));
				role.setNote(rs.getString(3));
			}
		} catch (ClassNotFoundException | SQLException e) {
   
			// 异常处理
			e.printStackTrace();
		} finally {
   
			// 关闭数据库连接资源
			try {
   
				if (rs != null && !rs.isClosed()) {
   
					rs.close();
				}
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
			try {
   
				if (ps != null && !ps.isClosed()) {
   
					ps.close();
				}
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
			try {
   
				if (con != null && !con.isClosed()) {
   
					con.close();
				}
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		return role;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值