一、前期准备
1、引入jar包,在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>
2、配置jdbcTemplate对象,注入DataSource
<!-- <JdbcTemplate对象>-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入dataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
3、在A类中注入jdbcTemplate对象(通过@AutoWired注入) (注意**在A类前记得加注解,如@service等)(所以在xml配置文件中记得组件扫描)
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
配置文件部分如下
<!-- 组件扫描 -->
<context:component-scan base-package="com.company"></context:component-scan>
<!-- 数据库连接池 -->
<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>
<!-- <JdbcTemplate对象>-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入dataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
二、数据库操作(增删改查)
1.在注入jdbcTemplate的类中进行数据库添加、删除、修改操作
1)创建表中每个对象的类,包含表中各列的名称,以及get和set方法创建。如下图中的book类;
2)在A接口中创建添加、删除、修改的函数(jdbcTemplate.update( , )第一个参数sql语句,第二个参数sql语句中需要的参数),在A类中进行重写,写入具体操作;
3)在test类中进行测试,测试类编写可以参考这篇里面。
A类代码如下:
@Service
public class BookDaoImpl implements BookDao{
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(Book book) {
String sql = "insert into t_book values(?,?,?)";
jdbcTemplate.update(sql,book.getUserID(),book.getUsername(),book.getUstatus());
}
test类代码如下:
@Test
public void testAdd() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookDaoImpl bookDaoImpl = context.getBean("bookDaoImpl", BookDaoImpl.class);
Book book = new Book();
book.setUserID("10");
book.setUsername("heima");
book.setUstatus("5");
bookDaoImpl.add(book);
2.查询并返回
1)查询并返回某个值
区别是执行sql语句的函数与增删改查不同,采用queryForObject( ,)方法,第一个参数是sql语句,第二个参数是返回类型的class(如返回int数值,则为Interger.class)。
2)查询并返回对象
与返回值所用的函数相同,但参数不同queryForObject( ,,)
第一个参数sql语句
第二个参数new BeanPropertyRowMapper< >( ) 尖括号里面是返回对象类型,圆括号里是返回对象类型的class
第三个参数是需要输入的值(即sql查询语句中需要输入的值的形参)
public Book foundone(int id) {
String sql = "select * from t_book where user_id=?";
Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
return book;
3)查询并返回对象集合( List<对象类型> )
区别是执行sql语句的函数为query( , , ),参数与返回对象是所表示的一样(注意第二个参数的尖括号里面是返回对象类型,圆括号里是返回对象类型的class)
3.批量操作
执行sql语句的函数是batchUpdate( , ),第一个参数sql语句,第二个参数List集合,对其进行批量操作。
public void batchadd(List<Object[]> args) {
String sql = "insert into t_book values(?,?,?)";
int[] adds = jdbcTemplate.batchUpdate(sql, args);
System.out.println(Arrays.toString(adds));
}