Spring框架对JDBC进行封装,使用jdbcTemplate方便实现对数据库操作。
1、引入依赖jar包
2、在Spring配置文件配置数据库连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql://user_db"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
</bean>
3、配置jdbcTemplate对象,注入DataSource
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
4、创建Service和Dao类,在dao中注入jdbcTemplate
*配置文件。开启扫描注解
<!--开启组件扫描-->
<context:component-scan base-package="spring5_2"></context:component-scan>
<!--连接数据库-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/user_db?serverTimezone=UTC"></property>
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
*Service
@Service
public class BookService {
//注入Dao
@Autowired
private BookDao bookDao;
//添加的方法
public void addBook(Book book){
bookDao.add(book);
}
}
*BookDao
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
2、编写service和dao
(1)在dao进行数据库添加操作
(2)调用jdbcTempl对象里面update方法实现添加操作
jdbcTemplate.update(sqlStr,args);
jdbcTemplate.update(sqlStr,args);
update两个参数:sql语句,可变参数(用来设置sql语句值)。
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplatle
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(Book book) {
String sqlStr="insert into t_book values(?,?,?)";
Object []args={book.getUserId(),book.getUsername(),book.getUstatus()};
int update=jdbcTemplate.update(sqlStr,args);
System.out.println(update);
}
}
Book类
public class Book {
private String userId;
private String username;
private String ustatus;
public void setUserId(String userId) {
this.userId = userId;
}
public void setUsername(String username) {
this.username = username;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
public String getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public String getUstatus() {
return ustatus;
}
@Override
public String toString() {
return "Book{" +
"userId='" + userId + '\'' +
", username='" + username + '\'' +
", ustatus='" + ustatus + '\'' +
'}';
}
}
测试类
@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("2");
book.setUstatus("3");
bookService.addBook(book);
}
jdbcTemplate修改和删除
1、修改:
@Override
public void updateBook(Book book) {
String sql="update t_book set username=?,ustatus=? where uer_id=?";
Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
2、删除:
@Override
public void delete(String id) {
String sql="delete from t_book where user_id=?";
int update = jdbcTemplate.update(sql, id);
System.out.println(update);
}
jdbcTemplate操作数据库 (查询返回某个值)
1、查询表里面有多少条记录,返回是某个值
2、使用jdbcTemplate实现查询返回某个代码
jdbcTemplate.queryForObject(sql,Integer.class);
jdbcTemplate操作数据库 (查询返回对象)
场景:查询图书详情
还是用jdbcTemplate实现查询返回对象。
包含 了是三个参数,sql语句,RowMapper接口,sql语句值
jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
jdbcTemplate操作数据库 (查询返回集合)
其他。。。
事务
数据库操作的最基本单元。逻辑上一组操作,要么都成功,一个失败都失败。
银行转账。