Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作;
准备工作:
1、引入相关jar包
2、在spring配置文件中配置数据库连接池
<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="root" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>
3、配置jdbcTemplate对象,给jdbcTemplate注入之前配置的数据库连接池对象;
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入 dataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
4、创建service类、dao类,在dao接口实现类中注入jdbcTemplate对象;
⚫ Service
@Service
public class BookService {
//注入 dao
@Autowired
private BookDao bookDao;
}
⚫ Dao
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
应用
//2、编写 service 和 dao
//(1)在 dao 进行数据库添加操作
//(2)调用 JdbcTemplate 对象里面 update 方法实现添加操作
//⚫ 有两个参数
//⚫ 第一个参数:sql 语句
//⚫ 第二个参数:可变参数,设置 sql 语句值
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
//添加的方法
@Override
public void add(Book book) {
//1 创建 sql 语句
String sql = "insert into t_book values(?,?,?)";
//2 调用方法实现
Object[] args = {book.getUserId(), book.getUsername(),
book.getUstatus()};
int update = jdbcTemplate.update(sql,args);
System.out.println(update);
}
}
//3、测试类
@Test
public void testJdbcTemplate() {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService",
BookService.class);
Book book = new Book();
book.setUserId("1");
book.setUsername("java");
book.setUstatus("a");
bookService.addBook(book);
}
根据查询结果不同调用jdbcTemplate的不同方法:
某个值:
第二个参数为:返回类型的Class,比如返回int,这里写Integer.class;
查询返回对象:
第二个参数:
如果要返回的对象为Book则
new BeanPropertyRowMapper<Book>(Book.class)
查询返回集合:
事务操作:重点掌握
1、什么事务
(1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操 作都失败
(2)典型场景:银行转账 * lucy 转账 100 元 给 mary * lucy 少 100,mary 多 100
2、事务四个特性(ACID)
(1)原子性 (2)一致性 (3)隔离性 (4)持久性