spring 对 jdbc 做了封装,就是 JdbcTemplate,可以让操作数据库更加方便。
在之前的基础上,再引入这些依赖。
外部文件 jdbc.properties:
prop.driverClass=com.mysql.jdbc.Driver prop.url=jdbc:mysql://localhost:3306/userDb prop.username=root prop.password=123456
配置文件引入:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <context:component-scan base-package="com.pingguo.spring5"></context:component-scan> <!--引入外部属性文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <!--配置连接池--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${prop.driverClass}"></property> <property name="url" value="${prop.url}"></property> <property name="username" value="${prop.username}"></property> <property name="password" value="${prop.password}"></property> </bean> </beans>
注入 DataSource。
... ... <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入datasource--> <property name="dataSource" ref="dataSource"></property> </bean> ... ...
创建 dao,在里面注入 JdbcTemplate 。
@Repository public class BookDaoImpl implements BookDao { // 注入 jdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; }
创建 service 类,在里面注入 dao。
@Service public class BookService { // 注入dao @Autowired private BookDao bookDao; }
以添加为例。
建一个很简单的表,里面有 3 个字段。
创建数据表对应的实体类,并且生成 3 个属性的 get、set方法。
public class Book { private String userId; private String username; private String userStatus; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } ... ...
service
@Service public class BookService { // 注入dao @Autowired private BookDao bookDao; public void addBook(Book book) { bookDao.add(book); } }
dao 的实现类。
@Repository public class BookDaoImpl implements BookDao { // 注入 jdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; @Override public void add(Book book) { String sql = "insert into t_book values (?, ?, ?)"; int result = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUserStatus()); System.out.println(result); } }
使用 jdbcTemplate.update() 方法进行添加,第一个参数是 sql,第二个不定长参数,成功则返回 1。
public class TestBook { @Test public void testJdbc() { ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); BookService bookService = context.getBean("bookService", BookService.class); Book book = new Book(); book.setUserId("1"); book.setUsername("ceshi"); book.setUserStatus("3"); bookService.addBook(book); } }
运行结果:
八月 05, 2021 10:35:15 下午 com.alibaba.druid.pool.DruidDataSource info 信息: {dataSource-1} inited 1 Process finished with exit code 0
查看数据表
成功添加。
删除跟修改操作跟上面类似了,不再演示。