• Spring SimpleJdbcTemplate查询示例


    这里有几个例子来说明如何使用SimpleJdbcTemplate query()方法来查询或从数据库中提取数据。在 JdbcTemplate query() 方法,需要手动转换返回的结果转换为一个目标对象类型,并传递一个对象数组作为参数。在SimpleJdbcTemplate类,它是更加人性化和简单。
    jdbctemplate VS simplejdbctemplate
    请比较 JdbcTemplate类的示例SimpleJdbcTemplate类的示例。
    1.查询单行
    这里有向你展示了如何查询或从数据库中提取单行的两种方式,并将其转换成一个模型类。

    1.1 自定义RowMapper

    在一般情况下,它总是建议来实现 RowMapper 接口来创建自定义的RowMapper,以满足您的需求。
    package com.yiibai.customer.model;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.springframework.jdbc.core.RowMapper;
    
    public class CustomerRowMapper implements RowMapper
    {
    	public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    		Customer customer = new Customer();
    		customer.setCustId(rs.getInt("CUST_ID"));
    		customer.setName(rs.getString("NAME"));
    		customer.setAge(rs.getInt("AGE"));
    		return customer;
    	}
    	
    }
    public Customer findByCustomerId(int custId){
    		 
    	String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";
     
    	Customer customer = getSimpleJdbcTemplate().queryForObject(
    			sql,  new CustomerParameterizedRowMapper(), custId);
    	
    	return customer;
    }

    1.2 BeanPropertyRowMapper

    在SimpleJdbcTemplate类,需要使用“ParameterizedBeanPropertyRowMapper' 代替 'BeanPropertyRowMapper”。
    public Customer findByCustomerId2(int custId){
    		 
    	String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";
     
    	Customer customer = getSimpleJdbcTemplate().queryForObject(sql,
              ParameterizedBeanPropertyRowMapper.newInstance(Customer.class), custId);
    	
    	return customer;
    }
    2,查询多行
    从数据库查询或提取多行记录,并将其转换成一个列表。

    2.1 ParameterizedBeanPropertyRowMapper

    public List<Customer> findAll(){
    		
    	String sql = "SELECT * FROM CUSTOMER";
    		
    	List<Customer> customers = 
    		getSimpleJdbcTemplate().query(sql, 
    		   ParameterizedBeanPropertyRowMapper.newInstance(Customer.class));
    		
    	return customers;
    }
    3.查询单值
    查询或提取数据库中的单个列的值。
    3.1单列名
    它显示了如何查询单个列名作为字符串。
    public String findCustomerNameById(int custId){
    		
    	String sql = "SELECT NAME FROM CUSTOMER WHERE CUST_ID = ?";
    		 
    	String name = getSimpleJdbcTemplate().queryForObject(
    		sql, String.class, custId);
    	
    	return name;
    		
    }
    3.2、行总数
    它展示了如何从数据库中查询行的总数。
    public int findTotalCustomer(){
    		
    	String sql = "SELECT COUNT(*) FROM CUSTOMER";
    		 
    	int total = getSimpleJdbcTemplate().queryForInt(sql);
    				
    	return total;
    }

    运行它

    package com.yiibai.common;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.yiibai.customer.dao.CustomerDAO;
    import com.yiibai.customer.model.Customer;
    
    public class SimpleJdbcTemplateApp 
    {
        public static void main( String[] args )
        {
        	 ApplicationContext context = 
        		new ClassPathXmlApplicationContext("Spring-Customer.xml");
        	 
             CustomerDAO customerSimpleDAO = 
                    (CustomerDAO) context.getBean("customerSimpleDAO");
    		 
             Customer customerA = customerSimpleDAO.findByCustomerId(1);
             System.out.println("Customer A : " + customerA);
             
             Customer customerB = customerSimpleDAO.findByCustomerId2(1);
             System.out.println("Customer B : " + customerB);
             
             List<Customer> customerAs = customerSimpleDAO.findAll();
             for(Customer cust: customerAs){
             	 System.out.println("Customer As : " + customerAs);
             }
            
             List<Customer> customerBs = customerSimpleDAO.findAll2();
             for(Customer cust: customerBs){
             	 System.out.println("Customer Bs : " + customerBs);
             }
             
             String customerName = customerSimpleDAO.findCustomerNameById(1);
             System.out.println("Customer Name : " + customerName);
             
             int total = customerSimpleDAO.findTotalCustomer();
             System.out.println("Total : " + total);
             
        }
    }

    总结

    SimpleJdbcTemplate 是不能代替 JdbcTemplate 的,它只是一个Java5的友好补充它。
  • 相关阅读:
    [导入]C#中将字符串转成 Base64 编码
    [导入]GridView中实现并列排名的例子
    VB.net编程中可能用到的边边角角(二) —— 取Mac地址、取某String的MD5值、多线程、RAR压缩、ADOX生成数据库、加载工程内的Form、一个滚动条控制两个DataGridView
    (转)Setup Factory 打包工具部分功能代码解析
    (转)SQL 优化原则
    VB.net编程中可能用到的边边角角(一) —— 反射添加Form、向Excel中写值
    自写的简单屏蔽特定字符的TextBox和数字TextBox
    spring import resource 文件后bean找不到问题解决
    mysql插入记录后获取插入数据的id值
    cookie+memcached实现单点登陆
  • 原文地址:https://www.cnblogs.com/soundcode/p/6367570.html
Copyright © 2020-2023  润新知