2021-03-22

使用spring框架 jdbcTemplate 进行mysql连接

Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

第一步:添加依赖

在pom.xml中进行添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
    </dependencies>

第二步:配置数据库连接池

在spring配置文件中配置数据库连接池

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="url" value="jdbc:mysql:///test" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    </bean>

第一个value中的test为数据库名称,其他的是固定的

第二个value为数据库用户名(如果你没设置,一般为默认root)

第三个value为数据库密码(没设置,默认为空)

第三步:配置 JdbcTemplate 对象,并注入到 DataSource

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 <property name="dataSource" ref="dataSource"></property>
</bean>

第四步:创建entity层、dao层、service层,并在dao层注入JdbcTemplate 对象

1)在spring配置文件中进行组件扫描

<context:component-scan base-package="com.atguigu"></context:component-scan>

2)entity层

package com.yu.entity;

public class Book {
    private String bookid;
    private String bookname;

    public Book() {
    }

    public Book(String bookid, String bookname) {
        this.bookid = bookid;
        this.bookname = bookname;
    }

    public String getBookid() {
        return bookid;
    }

    public void setBookid(String bookid) {
        this.bookid = bookid;
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookid='" + bookid + '\'' +
                ", bookname='" + bookname + '\'' +
                '}';
    }
}

3)dao层

//Bookdao接口
public interface BookDao {
    
}
//Bookdao实现类
@Repository
public class BookDaoImpl implements BookDao{
    //注入JdbcTemplate
    @Autowired
 	private JdbcTemplate jdbcTemplate;
}

4)service层

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

数据库操作

1)添加、修改、删除

jdbcTemplate中的update方法可进行添加、修改、删除操作

public int update(String sql, @Nullable Object... args)

update方法

第一个参数:sql语句

之后的参数:sql语句中?所要带入的值,可以是一个数组

@Nullable表示之后的参数可以为空

dao层

//BookDao接口
//增加
void addBook(Book book);
//删除
void deleteBook(String bookid);
//修改
void updateBook(Book book);
//BookDaoImpl类
//增加
public void addBook(Book book) {
    int update = jdbcTemplate.update("insert into book values 						(?,?)",book.getBookid(),book.getBookname());
    System.out.println(update);
}
//删除
public void deleteBook(String bookid) {
    int update = jdbcTemplate.update("delete from book where bookid = 				?",bookid);
    System.out.println(update);
}
//修改
public void updateBook(Book book) {
    int update = jdbcTemplate.update("UPDATE book SET bookname = ?  WHERE 			bookid = ?",book.getBookname(),book.getBookid());
    System.out.println(update);
}

service层

//BookService类
//增加
public void addBook(Book book){
	bookDao.addBook(book);
}
//删除
public void deleteBook(String bookid){
    bookDao.deleteBook(bookid);
}
//修改
public void updateBook(Book book){
    bookDao.updateBook(book);
}

2)查询

1.查询返回一个值

queryForObject方法中:

第一个参数代表:sql语句;

第二个参数代表:返回类型class

dao层

//BookDao接口
int selectCount();
//BookDaoImpl类
public int selectCount() {
    Integer count = jdbcTemplate.queryForObject("select count(*) from 					book",Integer.class);
    return count;
}

service层

public int selectCount(){
    return bookDao.selectCount();
}
2.查询返回对象

queryForObject方法中:

第一个参数:sql语句

第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面 实现类 完成数据封装 第三个参数:sql 语句值

dao层

//BookDao接口
Book selectBook(String bookid);
//BookDao实现类
public Book selectBook(String bookid) {
    Book book = jdbcTemplate.queryForObject("select * from book where bookid = ?", new BeanPropertyRowMapper<Book>(Book.class), bookid);
    return book;
}

service层

//BookService类
public Book selectBook(String bookid){
    return bookDao.selectBook(bookid);
}
3.查询返回集合

query方法

第一个参数:sql语句

第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面 实现类 完成数据封装

dao层

//BookDao接口
List<Book> selectAllBook();
//BookDao实现类
public List<Book> selectAllBook() {
    List<Book> list = jdbcTemplate.query("select * from book", new 						BeanPropertyRowMapper<Book>(Book.class));
    return list;
}

service层

//BookService类
public List<Book> selectAllBook(){
    return bookDao.selectAllBook();
}

3)批量操作

1.批量添加

batchUpdate方法

第一个参数:sql语句

第二个参数:List集合,添加多条记录数据

dao层

//BookDao接口
void batchAddBook(List<Object[]> batchs);
//BookDao实现类
public void batchAddBook(List<Object[]> batchs) {
    int[] ints = jdbcTemplate.batchUpdate("insert into book values(?,?)", batchs);
    System.out.println(Arrays.toString(ints));
}

service层

//BookService类
public void batchAddBook(List<Object[]> batchs){
    bookDao.batchAddBook(batchs);
}
2.批量修改

dao层

//BookDao接口
void batchUpdateBook(List<Object[]> batchs);
//BookDao实现类
public void batchUpdateBook(List<Object[]> batchs) {
    int[] ints = jdbcTemplate.batchUpdate("update book set bookname=? where bookid=?", batchs);
    System.out.println(Arrays.toString(ints));
}

service层

//BookService类
public void batchUpdateBook(List<Object[]> batchs){
    bookDao.batchUpdateBook(batchs);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值