1.什么是JDBCTempdate?
简单的说就是Spring框架对JDBC进行了封装,可以方便的实现对数据库的操作
下面通过JDBCTempdate操作数据库进行增删改查操作
准备工作
1.引入相关jar包
2.配置连接池
3.配置jdbctemplate对象,注入dataSource
<?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"
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">
<!--引入外部属性文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--配置连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${prop.driverClassName}"></property>
<property name="url" value="${prop.url}"></property>
<property name="username" value="${prop.username}"></property>
<property name="password" value="${prop.password}"></property>
</bean>
<!--jdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入dataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--开启注解扫描-->
<context:component-scan base-package="com.atguigu"></context:component-scan>
</beans>
4.创建类(此处为bookService,bookdao和user类),通过update方法进行增删改操作,此处演示增
@Service
public class bookService {
//注入dao
@Autowired
private bookDao bookDao;
//添加的操作
public void addUser(user user) {
bookDao.add(user);
}
}
@Repository
public class bookDaoImpl implements bookDao {
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(user user) {
String sql = "insert into user(name,password,address,phone) values(?,?,?,?)";
int update = jdbcTemplate.update(sql, user.getName(), user.getPassword(), user.getAddress(), user.getPhonre());
System.out.println(update);
}
}
测试类,添加数据成功
@Test
public void test1() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
bookService bookService = context.getBean("bookService", bookService.class);
user user = new user();
user.setName("王小鸡");
user.setPassword("123456");
user.setAddress("北京");
user.setPhonre("1337123456");
bookService.addUser(user);
}
JDBCTempdate操作数据库查询操作
(分别为查询操作返回某个值(count),返回对象,返回集合)
service层
@Service
public class bookService {
//注入dao
@Autowired
private bookDao bookDao;
//返回某个值
public int findCount(){
return bookDao.selectCount();
}
//返回对象
public user findObj(int id){
return bookDao.findObj(id);
}
//返回集合
public List<user> findlist(){
return bookDao.findlist();
}
}
dao层
@Repository
public class bookDaoImpl implements bookDao {
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public int selectCount() {
String sql = "select count(*) from user";
return jdbcTemplate.queryForObject(sql, Integer.class);
}
@Override
public user findObj(int id) {
String sql = "select * from user where id = ?";
return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<user>(user.class), 1);
}
@Override
public List<user> findlist() {
String sql = "select * from user";
List<user> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<user>(user.class));
return query;
}
}
测试
@Test
public void test3() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
bookService bookService = context.getBean("bookService", bookService.class);
int count = bookService.findCount();
System.out.println(count);
}
@Test
public void test4() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
bookService bookService = context.getBean("bookService", bookService.class);
user user = bookService.findObj(1);
System.out.println(user);
}
@Test
public void test5() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
bookService bookService = context.getBean("bookService", bookService.class);
List<user> list = bookService.findlist();
System.out.println(list);
}
批量操作 (以添加为例) 调用 batchUpdate()
service层
@Service
public class bookService {
//注入dao
@Autowired
private bookDao bookDao;
//批量添加
public void batchadd(List<Object[]> batchArgs){
bookDao.batchadd(batchArgs);
}
}
dao层
@Repository
public class bookDaoImpl implements bookDao {
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void batchadd(List<Object[]> batchArgs) {
String sql = "insert into user(name,password,address,phone) values(?,?,?,?)";
jdbcTemplate.batchUpdate(sql, batchArgs);
}
}
测试类
@Test
public void test6() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
bookService bookService = context.getBean("bookService", bookService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = new Object[]{"a", "123456", "beijing", "123456"};
Object[] o2 = new Object[]{"b", "123456", "beijing", "123456"};
Object[] o3 = new Object[]{"c", "123456", "beijing", "123456"};
list.add(o1);
list.add(o2);
list.add(o3);
bookService.batchadd(list);
}