Sping 사용 Jdbc 템 플 릿

글 목록
  • 1.개술
  • 2.환경 설정
  • 3.XML 설정 사용
  • 3.1 직접 사용
  • 3.2 설정 사용
  • 1.개술
    SpringJdbcTemplate 는 spring 프레임 워 크 에서 제공 하 는 대상 으로 원본 JDBC API 대상 에 대한 간단 한 패키지 입 니 다.spring 프레임 워 크 는 우리 에 게 많은 조작 템 플 릿 류 를 제공 합 니 다.
  • 관계 형 데 이 터 를 조작 하 는:JdbcTemplate,HibernateTemplate
  • nosql 데이터 베 이 스 를 조작 하 는:RedisTemplate
  • 메시지 큐 를 조작 하 는:JmsTemplate
  • 2.환경 설정
  • 좌표 가 져 오기
  • <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>5.0.2.RELEASEversion>
    dependency>
    
  • bean.xml 프로필 에 제약 조건 추가:
  • 
    <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}
    

    좋은 웹페이지 즐겨찾기