SSM 프레임 워크 교육 과정 (4 개) - SpringJDBC


이상 JDBC의 .Spring 처리

봄과 같은 특정 예외 채택하기 : 자신의 예외 유형으로 변환 통합되는 SQLException을, 부모 클래스와 DataAccessException과 이러한 예외, 그들은 원래 예외 객체, 상황이 나타나지 않는 원래의 오류 메시지가 손실을 포장. 그리고이 아닌 이상의 RuntimeException을 DataAccessException과 상속, 우리는 최 외층에 인터셉터 통합 제어 프로세스를 사용할 수 있습니다, 그 과정에서 코드를 사용하지 않습니다.


II. 데이터 소스 데이터 소스 획득

데이터 소스를 얻을 수있는 세 가지 방법이 있습니다 :

  1. JNDI에서 데이터 소스 (구성해야 서버가 일반적으로 구성 파일에서 사용되지 않음)
  2. 타사 연결 풀 데이터 소스를 얻기 스프링 개의 패킷 데이터 소스 구현 클래스를 포함하는 제 클래스 종속 패키지 달성은 먼저 DBCP는, C3P0는 초이며, XML 구성 파일에서 이들 2 종류의 수 데이터 소스
  3. 데이터 소스 이것은 DriverManagerDataSource를 얻을 연결하는 (일반적으로 적용되지 않음)

III. 데이터 소스는 두 가지 방법으로 구성

구성 데이터 소스에 대한 3.1 DBCP

  1. 필수 항아리 패키지
  • 평민 - DBCP-1.4.jar
  • 공유지 풀-1.6.jar
  • 스프링 JDBC - 5.1.3.RELEASE.jar
  • 봄-TX-5.1.3.RELEASE.jar
    바이두 네트워크 디스크 다운로드 : 다운로드
    자식 다운로드 : 다운로드

2. 구성 jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/javaweb
username=root
password=123456
maxActive=10
  1. 인용 로컬 구성 파일 및 구성 데이터 소스
<!-- 引入本地配置文件 -->
<util:properties id="jdbc" location="classpath:config/jdbc.properties"></util:properties>
	
<!-- 配置dbpc数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	<property name="driverClassName" value="#{jdbc.driver}"></property>
	<property name="url" value="#{jdbc.url}"></property>
	<property name="username" value="#{jdbc.username}"></property>
	<property name="password" value="#{jdbc.password}"></property>
	<property name="maxActive" value="#{jdbc.maxActive}"></property>
</bean>

4.DBCP 일반적인 구성

  1. BasicDataSource의는 데이터 소스 닫습니다 close () 메소드를 제공 강렬한 무늬 때문에 컨테이너가 봄을 닫을 때, 데이터 소스가 제대로 단순히 폐쇄 될 수 있음을 구성 파괴-방법 = "가까운"속성, 대담한 스타일 . 상기 특성 외에 필요한 데이터 소스에서 일반적인 특성이있다 :
  2. defaultAutoCommit 굵은 스타일 : 데이터 소스 연결에서 반환 된 세트 자동 제출 메커니즘 여부 , 기본값은 사실이다
  3. defaultReadOnly : 데이터 소스는 읽기 전용 작업은 기본은 거짓입니다 설정;
  4. maxActive 대해 : 연결되는 데이터베이스 연결의 최대 수는 제한없이 0에 세트이고;
  5. maxIdle는 : 대기 연결의 최대 수 시간, 제한 없음 0으로 설정;
  6. maxWait는 : 최대 시간 (초)은 대기 시간이 지남에 그들이 오류 메시지를보고 (밀리 초);
  7. validationQuery는 : 연결 반환에, 데이터의 적어도 하나 개의 행을 SQL 쿼리의 성공을 확인하는 데 사용됩니다;

3.2 데이터 소스 구성을 달성 C3P0

  1. 필수 항아리 패키지
  • c3p0-0.9.5.2.jar
  • mchange - 평민 - 자바-0.2.11.jar
    바이두 네트워크 디스크 다운로드 : 다운로드
    자식 다운로드 : 다운로드
  1. 다른 속성의 C3P0와 DBCP 구성과 실질적으로 동일한, 다음 지식
  2. 공통 속성 구성 :
  1. driverClass
  2. jdbcrl
  3. 사용자
  4. 암호
  5. initialPoolSize : 초기화되는 연결 풀을 만들 때 연결의 수, 기본값 : 3
  6. minPoolSize는 : 연결 풀의 최소 수는 기본을 유지 : 3
  7. maxPoolSize :이 값은 훌륭한 디자인, 기본이 될 가능성이 있으므로 연결 풀의 최대 연결 수 있고,이 값은 새 연결하지만, 다른 연결에 대한 액세스 출시를 기다리는 경우 새 연결을받지 않습니다 총 연결 수를 초과 할 것 : 15
  8. acquireIncrement는 : 일회성 연결의 부재에서 새 데이터베이스 연결 풀 유휴 상태의 수는 가능한 경우, 기본적으로 만들어집니다 : 3
  9. maxIdleTime : 더이 시간보다, 데이터베이스 연결을 사용하지 않은 경우 연결에 대한 최대 유휴 시간, 그것은 연결을 떨어질 것입니다. 0 분리하지 않은 경우, 기본값은 0입니다;
  10. maxConnectionAge는 : 자동으로 연결 풀을 끊 연결이 삭제이 시간이 지남에 따라 생존 기간의 연결을 구성.

네 .Spring가와 DAO의 준비를 지원하는 방식으로 작성

  1. JdbcTemplate을 추상 클래스는 매우 효과적으로 연결 자원을 닫습니다 잊고으로 오류를 방지 할 수 JDBC의 사용을 단순화, 연결 등 패키지의 출시를 얻기 위해 일반적인 JDBC 방법을 캡슐화합니다.
  2. JDBC JdbcDaoSupport 추상 클래스의 오브젝트 데이터 소스를 주입 할 때 사용하는 프로그래밍 기법 JDBC DAO 상위 클래스를 이용하여 데이터 액세스 개체 및 JdbcTemplate와 오브젝트 정보를 획득 한 클래스의 연결베이스 클래스이다.

글 :

  1. 모드 1 : JdbcDaoSupport 상속 DAO 후 getIdbcTemplate () 메소드에 의해 JdbcTemplate을에게 목표를 얻을 (이 방법은 몇 가지 침습적 코드가, 권장하지 않음)
  2. 두 모드 :( 권장) DAO 구현 주입 스프링 JdbcTemplate을 용기 내에서 객체를 인스턴스화 JdbcDaoSupport 구성 콩 상속되지.

JdbcTemplate을 달성하기 위해 데이터베이스를 사용하여 V. CURD 작업

  1. 빈 인스턴스에 배치 JdbcTemplate을의 spring.xml은, 그것은 스프링 JDBC를 항아리 패키지의 사용을 필요로
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
	<property name="dataSource" ref="dataSource"></property>
</bean>
  1. 엔터티 클래스 만들기
public class User {
	private int userId;
	private String userName;
	private String password;
	private String phoneNumber;
//省略get和set方法
}
  1. 매핑 클래스 엔티티 클래스를 만들고 데이터베이스 엔티티 클래스 필드 맵핑 관계를 지정하는 데 사용 함으로써, RowMapper의 인터페이스 구현을, 데이터의 각 행은 개체의 인스턴스에 매핑
public class UserMapper implements RowMapper<User>{

	@Override
	public User mapRow(ResultSet rs, int i) throws SQLException {
		User user = new User();
		user.setUserId(rs.getInt("userId"));
		user.setUserName(rs.getString("userName"));
		user.setPassword(rs.getString("password"));
		user.setPhoneNumber(rs.getString("phoneNumber"));
		System.out.println(i);
		return user;
	}
}
  1. 노트의 사용 @Repository DAO 클래스
@Repository  //DAO注解类
public class UserDAO {
	
	@Autowired
	private JdbcTemplate jt;
	UserMapper userMapper = new UserMapper();
	
	public List<User> getAll(){
		String sql = "select * from user";
		Object[] obj = {};
		// 参数(sql语句,?参数,映射类)
		List<User> uList = jt.query(sql, obj, userMapper);
		return uList;
	}
	
	public User getOne() {
		String sql = "select * from user where userId = ?";
		Object[] obj = {1001};
		User user = jt.queryForObject(sql, obj,userMapper);
		return user;
	}
	
	public int delete(int userId) {
		String sql = "delete from user where userId=?";
		Object[] obj = {1003};
		int count = jt.update(sql,obj);
		return count;
	}
}
  1. 일반적인 방법 :
메소드 이름 효과
의 queryForObject () 쿼리 단일 데이터
질문() 여러 데이터 쿼리 목록을 반환
최신 정보() 추가를 수행하려면, 수정 및 삭제 문
의 batchUpdate () 배치 관련 문을 실행;
() 실행 모든 SQL 문을 실행할 수 있습니다, 일반적으로 DDL 문을 실행하는 데 사용
게시 26 개 원래 기사 · 원의 찬양 (27) · 전망 6869

추천

출처blog.csdn.net/qq_40705355/article/details/98638521