spring操作數據庫


1、JdbcTemplate

spring對數據庫的操作在jdbc上做了更深層次的封裝JdbcTemplate,處理了資源的建立和釋放(不需要我們管理連接了),我們只需要提供SQL語句(不需要我們設置參數了)和提取結果(查詢時候可以直接返回對應的實體類),使JDBC更加易於使用。它也可以使用spring的注入功能,將數據源注入JdbcTemplate,來實現操作數據庫。

2、JdbcTemplate常用方法

  • update(更新數據)
  • batchUpdate(批量更新數據)
  • queryForObject(查詢單行數據或者單值數據)
  • query(查詢多行數據)

3、Spring中實現jdbcTemplate對數據庫操作(采用c3p0連接池)

1、需要導入的jar包

  • spring-jdbc-5.0.6.RELEASE.jar
  • spring-tx-5.0.6.RELEASE.jar
  • mysql-connector-java-5.0.7.jar
  • c3p0-0.9.5.2.jar

2、springxml配置

    <context:property-placeholder
    		location="classpath:jdbc.properties" />
    	<!-- 配置c3p0數據源 -->
    	<bean id="dataSource"
    		class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="user" value="${jdbc.user}"></property>
    		<property name="password" value="${jdbc.password}"></property>
    		<property name="driverClass" value="${jdbc.driverClass}"></property>
    		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    	</bean>
    
    	<!-- 將c3p0數據源注入jdbcTemplate -->
    	<bean id="jdbcTemplate"
    		class="org.springframework.jdbc.core.JdbcTemplate">
    		<property name="dataSource" ref="dataSource"></property>
    	</bean>

3、User實體類

    public class User {
    
    	private int id;
    	private String username;
    	private String password;
    
    	public User() {
    		super();
    	}
    
    	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;
    	}
    
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
    	}
    
    }

4、測試類

    public void testUserServiceImpl() {
    		//獲取IOC容器
    		ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");	
    		
    		//通過ApplicationContext對象的getBean方法來獲取對象實例
    		//獲取數據連接模板JdbcTemplate
    		JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
    		
    		//增加
    		String sql1 = "insert into user(username,password) values(?,?)";
    		System.out.println(jdbcTemplate.update(sql1, "user","user123"));
    		
    		//修改
    		String sql2 = "update user set username = ? where id = 10000";
    		System.out.println(jdbcTemplate.update(sql2, "adminadmin"));
    		
    		//查詢基本數據
    		String sql3 = "select count(*) from user";
    		System.out.println(jdbcTemplate.queryForObject(sql3, Integer.class));
    		
    		//查詢單條記錄
    		String sql4 = "select * from user where id = 10000";
    		RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
    		User user = jdbcTemplate.queryForObject(sql4, rowMapper);
    		System.out.println(user);
    		
    		//查詢多條記錄
    		String sql5 = "select * from user";
    		List<User> list = jdbcTemplate.query(sql5, rowMapper);
    		for (User user2 : list) {
    			System.out.println(user2);
    		}
    		
    		//批量插入
    		String sql6 = "insert into user(username,password) values(?,?)";
    		List<Object[]> batchArgs=new ArrayList<Object[]>();
    		batchArgs.add(new Object[]{"aaaa","aaa123"});
    		batchArgs.add(new Object[]{"bbbb","bbb123"});
    		batchArgs.add(new Object[]{"cccc","ccc123"});
    		jdbcTemplate.batchUpdate(sql6, batchArgs);
    	}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM