Sping 사용 Jdbc 템 플 릿
42104 단어 Spring비밀 을 탐지 하 다
SpringJdbcTemplate 는 spring 프레임 워 크 에서 제공 하 는 대상 으로 원본 JDBC API 대상 에 대한 간단 한 패키지 입 니 다.spring 프레임 워 크 는 우리 에 게 많은 조작 템 플 릿 류 를 제공 합 니 다.
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.0.2.RELEASEversion>
dependency>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
beans>
3.XML 설정 사용
3.1 직접 사용
jdbcTemplate 대상 을 new 방식 으로 직접 가 져 오고 그 중의
query()
을 사용 하여 모든 것 을 조회 하거나 구체 적 인 조건 에 따라 조회 합 니 다.update()
을 사용 하여 저장,업데이트,삭제 작업 을 수행 합 니 다.queryforObject()
SQL 의 집합 함 수 를 사용 하여 조 회 를 실행 합 니 다.public class JdbcTemplateDemo1 {
public static void main(String[] args) {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/sql_store?serverTimezone=GMT");
ds.setUsername("root");
ds.setPassword("1234");
JdbcTemplate jt = new JdbcTemplate();
jt.setDataSource(ds);
//
List<Account> accounts = jt.query("select * from account where money = ?",new BeanPropertyRowMapper<Account>(Account.class),1000f);
for(Account account : accounts){
System.out.println(account);
}
//
jt.update("insert into account(name,money)values(?,?)","Ball",1000f);
//
jt.update("update account set name=?,money=? where id=?","Amy", 2000, 1);
//
jt.update("delete from account where id=?",1);
//
List<Account> accounts1 = jt.query("select * from account where id = ?",new BeanPropertyRowMapper<Account>(Account.class),1);
System.out.println(accounts.isEmpty()?" ":accounts1.get(0));
// ( , group by )
Long count = jt.queryForObject("select count(*) from account where money = ?",Long.class,1000f);
System.out.println(count);
}
}
3.2 설정 사용
account 표 의 내용 은 다음 과 같 습 니 다.
mysql> select * from account;
+----+----------+-------+
| id | name | money |
+----+----------+-------+
| 1 | Forlogen | 1000 |
| 2 | Kobe | 1000 |
| 3 | James | 1000 |
+----+----------+-------+
3 rows in set (0.00 sec)
실체 클래스 생 성:
public class Account implements Serializable {
private Integer id;
private String name;
private Float money;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Float getMoney() {
return money;
}
public void setMoney(Float money) {
this.money = money;
}
@Override
public String toString() {
return "Account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}';
}
}
지구 층 인터페이스 만 들 기:
public interface IAccountDao {
Account findAccountById(Integer accountId);
Account findAccountByName(String accountName);
void updateAccount(Account account);
}
인터페이스의 실현 클래스 를 만 들 고 Jdbc Support 를 계승 합 니 다.이 때 조회 등 작업 을 수행 할 때 호출 하 는 방법 에 필요 한 매개 변 수 는 다 릅 니 다.
public class IAccountDaoImpl1 extends JdbcSupport implements IAccountDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public Account findAccountById(Integer accountId) {
List<Account> accounts = jdbcTemplate.query("select * from account where id = ?",new BeanPropertyRowMapper<Account>(Account.class),accountId);
return accounts.isEmpty()?null:accounts.get(0);
}
@Override
public Account findAccountByName(String accountName) {
List<Account> accounts = jdbcTemplate.query("select * from account where name = ?",new BeanPropertyRowMapper<Account>(Account.class),accountName);
if(accounts.isEmpty()){
return null;
}
if(accounts.size()>1){
throw new RuntimeException(" ");
}
return accounts.get(0);
}
@Override
public void updateAccount(Account account) {
jdbcTemplate.update("update account set name=?,money=? where id=?",account.getName(),account.getMoney(),account.getId());
}
}
Jdbc Support 사용자 정의:
public class JdbcSupport {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setDataSource(DataSource dataSource) {
if(jdbcTemplate == null){
jdbcTemplate = createJdbcTemplate(dataSource);
}
}
private JdbcTemplate createJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
bean.xml 파일 을 만 들 고 용기 에 JdbcTemplate 를 주입 합 니 다:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="accountDao" class="dyliang.dao.impl.IAccountDaoImpl1">
<property name="jdbcTemplate" ref="jdbcTemplate">property>
bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource">property>
bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver">property>
<property name="Url" value="jdbc:mysql://localhost:3306/sql_store?serverTimezone=GMT">property>
<property name="username" value="root">property>
<property name="password" value="1234">property>
bean>
beans>
마지막 으로 JdbcTemplate 대상 을 가 져 오고 호출
query()
하여 조회 기능 을 실현 합 니 다.public class JdbcTempalteDemo2 {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
JdbcTemplate jt = ac.getBean("jdbcTemplate",JdbcTemplate.class);
List<Account> accounts = jt.query("select * from account where money = ?",new BeanPropertyRowMapper<Account>(Account.class),1000f);
for(Account account : accounts){
System.out.println(account);
}
}
}
Account{id=1, name='Forlogen', money=1000.0}
Account{id=2, name='Kobe', money=1000.0}
Account{id=3, name='James', money=1000.0}
또는 accontDao 를 통 해 지구 층 인 터 페 이 스 를 직접 호출 하여 클래스 를 실현 하 는 방법:
public class JdbcTemplateDemo3 {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
IAccountDao accountDao = ac.getBean("accountDao", IAccountDao.class);
Account accountById = accountDao.findAccountById(1);
System.out.println(accountById);
}
}
Account{id=1, name='Forlogen', money=1000.0}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.