1. 程式人生 > 其它 >Spring中使用JDBCTemplate

Spring中使用JDBCTemplate

技術標籤:框架

Spring 中使用JdbcTemplate

1,新建maven工程,匯入所需依賴

	<!--spring依賴-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.6.RELEASE</version>
    </dependency>
    <!--AOP AspectJ依賴-->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.2.6.RELEASE</version> </dependency> <!--JdbcTemplate依賴--> <!-- mysql依賴 --> <dependency> <
groupId
>
mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <!--Druid資料庫連線池依賴--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</
artifactId
>
<version>1.0.9</version> </dependency> <!-- 2.Spring dao依賴 --> <!-- spring-jdbc包括了一些如jdbcTemplate的工具類 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>5.2.6.RELEASE</version> </dependency>

2,引入資料庫連線池>>druid

在resources資源目錄中建立jdbcdruid.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=dbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=123456
max=20

在resources資源目錄中的spring配置檔案中加入連線池配置資訊

<!--引入連線池配置檔案-->
    <context:property-placeholder location="classpath:jdbcdruid.properties"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="maxActive" value="${max}"/>
    </bean>

3,配置JDBCTemplate物件,注入DataSource

<!--建立JDBCTemplate物件-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--注入dataSource-->
        <property name="dataSource" ref="dataSource"/>
    </bean>

4,建立dao和service,在dao中注入jdbcTemplate物件

dao

@Repository
public class BookDaoImpl implements BookDao {
    //注入jdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

service

@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;
}

5,使用jdbcTemplate進行增刪改查操作

(1)建立表和實體類

public class User {
    private String userId;
    private String username;
    private String ustatus;
}

(2)編寫service和dao

@Repository
public class BookDaoImpl implements BookDao {
    //注入jdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void add(Book book) {

        String sql="insert into t_book values (?,?,?)";
        int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus());
        System.out.println(update);
    }
    @Override
    public void delete(Integer id) {
        String sql = "delete from t_book where user_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }

    @Override
    public void update(Book book) {
        String sql = "update t_book set username=?,ustatus=? where user_id=?";
        int update = jdbcTemplate.update(sql, book.getUsername(), book.getUstatus(), book.getUserId());
        System.out.println(update);
    }

    @Override
    public int selectCount() {
        //返回記錄數
        String sql = "select count(*) from t_book";
        Integer i = jdbcTemplate.queryForObject(sql, Integer.class);
        return i;
    }

    @Override
    public Book findBookInfo(Integer id) {
        String sql = "select * from t_book where user_id=?";
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }

    @Override
    public List<Book> findAll() {
        String sql = "select * from t_book";
        List<Book> books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return books;
    }
}
@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;
    // 新增的方法
    public void addBook(Book book){
        bookDao.add(book);
    }
    public void updateBook(Book book){
        bookDao.update(book);
    }
    //刪除
    public void deleteBook(Integer id){
        bookDao.delete(id);
    }
    //查詢表中的記錄數
    public int findCount(){
        return bookDao.selectCount();
    }
    //查詢返回物件
    public Book queryBook(Integer id){
        return bookDao.findBookInfo(id);
    }
    //返回集合
    public List<Book> queryAllBook(){
        return bookDao.findAll();
    }
}
@Test
    public void addBook() {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        bookService.addBook(new Book(null,"《假如給我三天光明》","y"));
        bookService.updateBook(new Book("1","《假如給我三天光明》","n"));
        bookService.deleteBook(1);
        int count = bookService.findCount();
        Book book = bookService.queryBook(2);
        List<Book> books = bookService.queryAllBook();
    }

6,使用JdbcTemplate模板對資料庫進行批量操作

(1)批量操作

batchUpdate(String sql,List<Object[ ] batchArgs >)
引數1:sql語句,引數2:List集合,新增多條記錄

 @Override
    public void batchAdd(List<Object[]> books) {
        String sql="insert into t_book values (?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, books);
        System.out.println(Arrays.toString(ints));
    }
@Test
    public void batchAdd() {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        List<Object[]> list = new ArrayList<>();
        Object[] o1={null,"java","n"};
        Object[] o2={null,"C++","n"};
        Object[] o3={null,"Python","n"};
        list.add(o1);
        list.add(o2);
        list.add(o3);
        bookService.batchAdd(list);
    }

(2)批量修改

    @Override
    public void batchUpdate(List<Object[]> books) {
        String sql = "update t_book set username=?,ustatus=? where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, books);
        System.out.println(Arrays.toString(ints));
    }
    @Test
    public void batchUpdate() {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        List<Object[]> list = new ArrayList<>();
        //注意佔位符順序
        Object[] o1={"《習近平談治國理政第一卷》","y",10};
        Object[] o2={"《習近平談治國理政第二卷》","y",11};
        Object[] o3={"《習近平談治國理政第三卷》","y",12};
        list.add(o1);
        list.add(o2);
        list.add(o3);
        bookService.batchUpdate(list);
    }

(3)批量刪除

    @Override
    public void batchDelete(List<Object[]> books) {
        String sql = "delete from t_book where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, books);
        System.out.println(Arrays.toString(ints));
    }
    @Test
    public void batchDelete() {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        List<Object[]> list = new ArrayList<>();
        //注意佔位符順序
        Object[] o1={10};
        Object[] o2={11};
        Object[] o3={12};
        list.add(o1);
        list.add(o2);
        list.add(o3);
        bookService.batchDelete(list);
a
    }