`

jdbcTemplate简单使用

阅读更多
废话少说,直接上例子
1.搭建环境
    就是导包和一些配置文件,这里就不多说了,可以参考附件。
    注意:mysql的innodb引擎才知道事务回滚
2.编码



public class User {
	private int id;
	private String username;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

dao接口
public interface UserDAO {
	public User findById(int id) throws Exception;
	public void addUser(User user) throws Exception;
	public void deleteUser(User user);
	public void updateUser(User user);
	public void batchAddUser(List<User> users);
	public void createTable(String sql);
	public void test(User user);
}


dao实现
@Transactional
@Component("UserDAO")
public class UserDAOImpl implements UserDAO {
	@Resource
	private JdbcTemplate jdbcTemplate;
	@Override
	public User findById(int id) throws Exception {
		String sql = "select id,username from user where id = ?";
		Object[] params = new Object[] { new Integer(id) };
		User user = jdbcTemplate.queryForObject(sql, params, new UserRowMapper());
		return user;

		}
		
		class UserRowMapper implements RowMapper<User> {

			@Override
			public User mapRow(ResultSet rs, int rowNumber) throws SQLException {
				User user = new User();
				user.setId(rs.getInt("id"));
				user.setUsername(rs.getString("username"));
				return user;
			}
		}


	@Override
	@Transactional//(rollbackFor=Exception.class)默认为runtimeException才回滚
	public void addUser(User user) throws Exception {
		String sql = "insert into user(username,password) values(?,?)";
		List<String> list = new ArrayList<String>();
		list.add(user.getUsername());
		list.add(user.getPassword());
		jdbcTemplate.update(sql, list.toArray());
		//throw new Exception("error");

	}

	@Override
	public void deleteUser(User user) {
		String sql = "delete from user where id=?";
		List<String> list = new ArrayList<String>();
		list.add(user.getId()+"");
		jdbcTemplate.update(sql, list.toArray());

	}
	@Transactional(rollbackFor=Exception.class)
	public void test(User user){
		String sql = "delete from user where id="+user.getId();
		jdbcTemplate.update(sql);
		sql = "update user set username='aa',password='bb' where id="+user.getId();
		jdbcTemplate.update(sql);
	}
	@Override
	@Transactional//(rollbackFor=Exception.class)
	public void updateUser(User user) {
		String sql = "update user set username=?,password=? where id=?";
		List<String> list = new ArrayList<String>();
		list.add(user.getUsername());
		list.add(user.getPassword());
		list.add(user.getId()+"");
		jdbcTemplate.update(sql, list.toArray());

	}

	@Override
	@Transactional//(rollbackFor=Exception.class)
	public void batchAddUser(final List<User> users) {
		 String sql = "insert into user (username,password) values(?,?)";
		  BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
		  public int getBatchSize() {
		    return users.size();    //这个方法设定更新记录数,通常List里面存放的都是我们要更新的,所以返回list.size();
		   }
		   public void setValues(java.sql.PreparedStatement ps, int i)
		     throws SQLException {
			   User user = users.get(i);
			   ps.setString(1, user.getUsername());
			   ps.setString(2, user.getPassword());
			   
		   }
		  };
		  jdbcTemplate.batchUpdate(sql, setter);
	}
	@Override
	public void createTable(String sql) {
		jdbcTemplate.execute(sql);
		
	}

}


测试类
package test.dao;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import test.model.User;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:lms-admin.xml" })
public class UserDAOImpl {
	//private static BeanFactory factory = new ClassPathXmlApplicationContext("lms-admin.xml");
	//UserDAO userDAO = (UserDAO) factory.getBean("UserDAO");
	@Resource
	UserDAO userDAO;
	
	@Test
	public void testCreate() throws Exception{
		String sql = "create table user(id int(20) primary key auto_increment,username varchar(20),password varchar(20));";
		userDAO.createTable(sql);
	}
	
	@Test
	public void testSearch() throws Exception{
		User user = userDAO.findById(6);
		System.out.println(user.getUsername());
	}
	@Test
	public void testSave() throws Exception{
		User user = new User();
		//user.setId(2);
		user.setPassword("aaa");
		user.setUsername("zs");
		userDAO.addUser(user);
	}
	@Test
	public void testDelete() throws Exception{
		User u = userDAO.findById(5);
		userDAO.deleteUser(u);
	}
	@Test
	public void testUpdate() throws Exception{
		User u = userDAO.findById(5);
		u.setPassword("lkasjdflkasd");
		u.setUsername("asdofjiweif");
		userDAO.updateUser(u);
	}
	@Test
	public void testBatchSave() throws Exception{
		List<User> users = new ArrayList<User>();
		User user1 = new User();
		user1.setPassword("aaa");
		user1.setUsername("zs");
		User user2 = new User();
		user2.setPassword("aaa");
		user2.setUsername("张三");
		users.add(user1);
		users.add(user2);
		userDAO.batchAddUser(users);
	}
	@Test
	public void testRoll() throws Exception{
		User user = userDAO.findById(5);
		userDAO.test(user);
		
	}
}



  • 大小: 9.5 KB
分享到:
评论

相关推荐

    JdbcTemplate使用.doc

    在Java应用中,特别是在基于Spring的系统中,`JdbcTemplate`是一个非常常用的数据访问工具,它提供了事务管理、参数绑定、异常翻译等功能,使得数据库操作更加简单、安全。 首先,要使用`JdbcTemplate`,我们需要...

    SpringBoot2.x入门教程之引入jdbc模块与JdbcTemplate简单使用方法

    SpringBoot 2.x 入门教程之引入 JDBC 模块与 JdbcTemplate 简单使用方法 本文主要介绍了 Spring Boot 2.x 入门教程之引入 JDBC 模块与 JdbcTemplate 简单使用方法,并详细讲解了 Spring Boot 2.x 项目中如何引入 ...

    JdbcTemplate简单实例

    **JdbcTemplate简单实例** 在Java开发中,数据库操作是一个非常重要的环节。Spring框架提供了一个强大的工具类——JdbcTemplate,它简化了与数据库交互的过程,帮助开发者避免了手动处理JDBC的繁琐工作,如连接管理...

    jdbcTemplate分页彻底解决,使用游标滚动

    在Java的Spring框架中,`JdbcTemplate`是一个非常重要的组件,它提供了数据库操作的简单抽象,使得开发者可以方便地执行SQL语句而无需编写复杂的DAO(数据访问对象)层。在处理大量数据时,传统的分页方法可能会导致...

    JavaEE JdbcTemplate的简单示例

    本篇将详细讲解JdbcTemplate的简单示例,帮助开发者更好地理解和运用这个强大的数据库访问组件。 JdbcTemplate是Spring对Java的JDBC API进行封装后的产物,它的主要目标是消除手动处理结果集、连接关闭等繁琐工作,...

    打印JdbcTemplate执行sql

    这篇博客文章的标题"打印JdbcTemplate执行sql"主要涉及如何在使用`JdbcTemplate`时,追踪并打印出执行的SQL语句,这对于调试和性能分析非常有帮助。接下来,我们将深入探讨`JdbcTemplate`的工作原理以及如何实现SQL...

    简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作

    而JdbcTemplate是Spring框架的一部分,它提供了一种简单且安全的方式来操作数据库,避免了直接编写SQL导致的潜在错误。 首先,确保你的项目已经集成了Spring Boot和MySQL的相关依赖。在`pom.xml`文件中,添加以下...

    SpringJdbcTemplate封装工具类

    通过上述分析,我们可以看到SpringJdbcTemplate是一个强大且灵活的工具,它通过封装JDBC操作,使得数据库访问变得更加简单和安全。在实际开发中,合理利用其特性,可以有效提升开发效率和代码质量。

    jdbcTemplate的使用方法.pdf

    本文将详细探讨JdbcTemplate的主要使用方法和优势。 1. **执行SQL语句** 使用JdbcTemplate的`execute()`方法可以执行任意的SQL语句,包括创建表、删除表等DDL操作。例如: ```java jdbcTemplate.execute(...

    spring-jdbcTemplate实例工程

    在这个实例工程中,我们将深入探讨Spring JdbcTemplate的基本使用、优势以及常见操作。 一、Spring JdbcTemplate简介 Spring JdbcTemplate的出现是为了弥补原生JDBC在编码上的繁琐,它通过模板方法模式,将SQL执行...

    JdbcTemplate的事务控制.docx

    然而,单纯使用`JdbcTemplate`进行数据库操作时,并不能自动管理事务,因此我们需要了解如何通过`JdbcTemplate`结合Spring框架来实现事务控制。 #### 二、原生 JDBC 的事务控制 在没有使用任何框架的情况下,我们...

    spring jdbcTemplate

    本篇文章将深入探讨Spring JdbcTemplate的使用方法和核心概念,并结合一个实际的图书馆系统Demo进行阐述。 一、Spring JdbcTemplate简介 Spring JdbcTemplate是Spring JDBC模块的核心组件,它提供了一套模板方法,...

    jdbcTemplate相关jar包.zip

    通过使用JdbcTemplate,开发者可以避免编写大量重复的代码,如打开和关闭连接、处理结果集等。JdbcTemplate的主要功能包括执行SQL查询、更新、存储过程,以及事务管理。 JdbcTemplate的工作原理主要包括以下几个...

    Spring的JDBCTemplate

    当hql等查询方式不能满足性能或灵活性的要求,必须使用SQL时,大家有三... JDBCTemplate的使用很简单,只要在ApplicationContext文件里定义一个jdbcTemplate节点,POJO获得注入后可以直接执行操作,不需要继承什么基类

    一个简单的spring-jdbctemplate扩展

    总的来说,这个“一个简单的spring-jdbctemplate扩展”项目旨在通过提供更高级别的抽象和便捷的API,使得开发人员在使用Spring JdbcTemplate时能更高效、更安全地进行数据库操作。通过研究这个项目的代码,我们可以...

    使用Spring JDBCTemplate进行增删改查curd操作

    通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文将深入探讨如何利用Spring JdbcTemplate进行CURD(Create、Read、Update、Delete)操作。 1. ...

    spring的jdbcTemplate小案例

    总结来说,Spring的JdbcTemplate提供了简洁、强大的API,使得数据库操作变得更加简单和安全。通过使用它,我们可以避免手动管理数据库连接,减少潜在的资源泄露问题,同时增强代码的可读性和可维护性。通过结合...

    JdbcTemplate

    在使用JdbcTemplate之前,首先需要配置数据源(DataSource)。Spring框架支持多种数据源实现,如Apache Commons DBCP或HikariCP。通过Spring的依赖注入(Dependency Injection,DI)特性,我们可以将数据源实例注入...

Global site tag (gtag.js) - Google Analytics