Spring框架对jdbc进行封装,使用JdbcTemplate方便实现对数据库操作
准备工作
1.引入相关依赖
2.配置数据库连接文件
<!--数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="jdbc:mysql:///user_db"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>
- 配置JdbcTemplate对象,注入dataSource对象
<!--JdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入dataSource-->
<property name="dataSource" value="dataSource"></property>
</bean>
4.编写相关类
@Service
public class BookService {
@Autowired
private BookDao bookDao;
}
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;
}
JdbcTemplate操作数据库
添加操作
@Override
public void add(Book book) {
//定义sql语句
String sql = "insert into t_book values(?,?,?)";
//调用更新方法,返回受影响的行数
int row = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus());
System.out.println("添加成功" + row);
}
//更新方法,args[]表示传入占位符内容
修改操作
@Override
public void updateBook(Book book) {
//定义sql语句
String sql = "update t_book set username=?,ustatus=? where user_id=? ";
int row = jdbcTemplate.update(sql, book.getUsername(), book.getUstatus(), book.getUserId());
System.out.println("更新成功" + row);
}
删除操作
@Override
public void deleteBook(int id) {
//定义sql语句
String sql = "delete from t_book where user_id=?";
int row = jdbcTemplate.update(sql, id);
System.out.println("删除成功" + row);
}
查询操作
查询表里有多少条记录,返回的是某个值
//查询记录数
@Override
public int selectCount() {
String sql = "select count(*) from t_book";
int result = jdbcTemplate.queryForObject(sql, Integer.class);
return result;
}
查询内容详情,返回对象
//查询返回单个对象
@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> findBookList() {
String sql = "select * from t_book";
//返回一个集合对象
List bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
批量操作
批量添加数据(batchUpdate)
//批量添加操作
@Override
public void batchAddBook(List<Object[]> batchArgs) {
String sql = "insert into t_book values(?,?,?)";
int[] rows = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(rows));
}
批量修改和批量删除实现过程类似,只是sql语句和传入参数内容不同