发表于: 2018-04-25 19:14:47
1 553
今日完成
1.使用JdbcTemplate进行CRUD操作
配置db.properties
jdbc.user=root
jdbc.password=123456789
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/mysql
配置spring-config.xml
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="userDao" class="spring.UserDao">
</bean>
测试JdbcTemplate的增删查改
package spring;
import JDBC.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.util.ArrayList;
import java.util.List;
/**
* 测试JdbcTemplate
*/
public class JdbcTemplateTest {
//测试update插入数据
@Test
public void updateInsertTest(){
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取IoC中的JdbcTemplate实例
JdbcTemplate jdbcTemplate = (JdbcTemplate)applicationContext.getBean("jdbcTemplate");
// 编写sql语句
String sql = "insert into st_info (name,age) values(?,?)";
int count = jdbcTemplate.update(sql, "jd",5);
System.out.println(count);
}
// 测试update修改数据
@Test
public void updateUpdateTest(){
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取IoC中的JdbcTemplate实例
JdbcTemplate jdbcTemplate = (JdbcTemplate)applicationContext.getBean("jdbcTemplate");
// 编写sql语句
String sql = "update st_info set name = ?,age = ? where id= ?";
jdbcTemplate.update(sql, "VIP",6,14);
}
// 测试update修改数据
@Test
public void updateDeleteTest(){
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取IoC中的JdbcTemplate实例
JdbcTemplate jdbcTemplate = (JdbcTemplate)applicationContext.getBean("jdbcTemplate");
// 编写sql语句
String sql = "delete from st_info where id =?";
jdbcTemplate.update(sql,15);
}
// 测试batchUpdate()批量插入,更新,删除
@Test
public void batchUpdateInsertTest(){
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取IoC中的JdbcTemplate实例
JdbcTemplate jdbcTemplate = (JdbcTemplate)applicationContext.getBean("jdbcTemplate");
// 编写sql语句
String sql = "insert into st_info (name,age) values(?,?)";
// 创建List
List<Object[]> list = new ArrayList<>();
list.add(new Object[]{"tx",10});
list.add(new Object[]{"wi",20});
list.add(new Object[]{"mj",3});
jdbcTemplate.batchUpdate(sql,list);
}
/**
* 从数据中读取数据到实体对象User
*/
@Test
public void queryTest(){
// 读取单个数据
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取IoC中的JdbcTemplate实例
JdbcTemplate jdbcTemplate = (JdbcTemplate)applicationContext.getBean("jdbcTemplate");
// 编写sql语句
String sql = "select id,name,age from st_info where id =?";
// 创建rowMapper结果集
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
User user = jdbcTemplate.queryForObject(sql,rowMapper,17);
System.out.println(user);
// 读取多个数据
String sql2 = "select id,name,age from st_info";
RowMapper<User> list = new BeanPropertyRowMapper<>(User.class);
List<User> users = jdbcTemplate.query(sql2,list);
for(User u:users){
System.out.println(u);
}
}
// 获取某个记录某列或者count、avg、sum等函数返回唯一值
@Test
public void selectCountTest(){
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取IoC中的JdbcTemplate实例
JdbcTemplate jdbcTemplate = (JdbcTemplate)applicationContext.getBean("jdbcTemplate");
// 编写sql语句
String sql = "select count(*) from st_info";
int count = jdbcTemplate.queryForObject(sql,Integer.class);
System.out.println(count);
}
// 实际开发中的应用调用UserDao.get()
@Test
public void getUserById(){
// 启动IoC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
UserDao userDao = (UserDao)applicationContext.getBean(UserDao.class);
System.out.println(userDao.get(21));
}
}
实际开发中创建User,UserDao进行获取对象
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public User get(int id){
String sql = "select id,name,age from st_info where id = ?";
RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);
return jdbcTemplate.queryForObject(sql,rowMapper,id);
}
}
明日计划:
Spring学习
遇到的问题:
配置db.properties和xml好后运行测试单元一直报错,后来查询到是才c3p0配置时driver和url必须用固定格式,不可以自己改
今日收获:
学习了JdbcTemplate的CRUD操作
评论