发表于: 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操作



返回列表 返回列表
评论

    分享到