spring学习笔记SpringJdbc

来源:互联网 发布:ant打包java配置文件 编辑:程序博客网 时间:2024/06/06 19:18
SpringJdbcTest.java


package com.lin.test.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

/*******************************************************************************

* SpringJdbcTest.java Created on 2014年7月24日

* Author: linfenliang

* Description:

* Version: 1.0

******************************************************************************/

public class SpringJdbcTest {

@Test
public void testName() throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("SpringJdbcTest_applicationContext.xml");
UsersDao dao = (UsersDao) context.getBean("usersDao");
//Users u = dao.query(1);
//System.out.println(u);
//boolean b = dao.addUsers(u);
//System.out.println(b);
List<Users> list = dao.queryAll();
for(Users u:list){
System.out.println(u);
}
}

}
interface UsersDao{
Users query(int id);
boolean addUsers(Users u);
void updateUsers(Users id);
List<Users> queryAll();
}
class UsersDaoImpl implements UsersDao{
private JdbcTemplate jdbcTemp;

@Resource
public void setDataSource(DataSource dataSource) {
this.jdbcTemp = new JdbcTemplate(dataSource);
}

@Override
public Users query(int id) {
//Users u = null;
//Connection conn = null;
//PreparedStatement pstmt = null;
//ResultSet rs = null;
//try {
//conn = dataSource.getConnection();
//pstmt = conn.prepareStatement("select id , username, password from users where id = ?");
//pstmt.setInt(1, id);
//rs = pstmt.executeQuery();
//if(rs!=null){
//u = new Users();
//if(rs.next()){
//u.setId(rs.getInt("id"));
//u.setUsername(rs.getString("username"));
//u.setPassword(rs.getString("password"));
//}
//}
//} catch (SQLException e) {
//// TODO Auto-generated catch block
//e.printStackTrace();
//}finally{
//close(rs,pstmt,conn);
//}
//return u;

RowMapper<Users> rowMapper=new RowMapper<Users>() {

@Override
public Users mapRow(ResultSet rs, int rowNum) throws SQLException {
Users u = new Users();
u.setId(rs.getInt(1));
u.setUsername(rs.getString(2));
u.setPassword(rs.getString(3));
return u;
}
};
return jdbcTemp.queryForObject("select id , username, password from users where id = ?",new Object[]{id},new int[]{java.sql.Types.INTEGER}, rowMapper);





}


@Override
public boolean addUsers(Users u) {
int rs = jdbcTemp.update("insert into users(username,password) values(?,?)", new Object[]{u.getUsername(),u.getPassword()}, new int[]{java.sql.Types.VARCHAR,java.sql.Types.VARCHAR});
return rs!=0;
}

@Override
public void updateUsers(Users id) {

}

private void close(ResultSet rs, PreparedStatement pstmt, Connection conn) {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
}
}
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
}
}

}

@Override
public List<Users> queryAll() {
RowMapper<Users> rowMapper=new RowMapper<Users>() {

@Override
public Users mapRow(ResultSet rs, int rowNum) throws SQLException {
Users u = new Users();
u.setId(rs.getInt(1));
u.setUsername(rs.getString(2));
u.setPassword(rs.getString(3));
return u;
}
};
return jdbcTemp.query("select id , username, password from users ", rowMapper);

}
}

class Users{
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer 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 ReflectionToStringBuilder.toString(this);
}
}

SpringJdbcTest_applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 启用注解方式注入 -->
<context:annotation-config/>
<!-- 启用自动代理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!-- 注解扫描路径 -->
<context:component-scan base-package="com.lin.test.jdbc" />
<bean id="usersDao" class="com.lin.test.jdbc.UsersDaoImpl"></bean>
<!--
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF-8"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
-->

<!--
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
-->
<context:property-placeholder location="jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.drivers}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource" />

</beans>

jdbc.properties

jdbc.drivers=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=root
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8


0 0