使用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);
}