发表于: 2017-12-24 23:22:25

1 588


1.昨天的错误解决:把最后的 ParameterizedBeanPropertyRowMapper改成BeanPropertyRowMapper。按住ALT+enter这样前面的一句话就import org.springframework.jdbc.core.BeanPropertyRowMapper;,解决了错误。如图:

package junit.Test;
import java.util.List;

import org.junit.Before;
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 com.ptteng.MyJdbcTemplate;
import com.ptteng.User;

public class SpringTest {
JdbcTemplate jTemplate=null;
   @Before
   public void before()
{
ApplicationContext application=new ClassPathXmlApplicationContext("beans.xml");
       MyJdbcTemplate template=(MyJdbcTemplate) application.getBean("myJdbcTemplate");
       jTemplate=template.getTemplate();
   }

@Test
   public void  TableTest()
{
//  jTemplate.execute("create table user(user_id int primary key auto_increment, username varchar(30));");
       String sql="insert into user(username) value(?);";
       Object obj[]={"wh"};
       jTemplate.update(sql,obj);
   }
@Test
   public void updateTest()
{
String sql="update user set username=? where id=?";
       int hang=jTemplate.update(sql,new Object[]{"wh2",2});
       System.out.println(hang);
   }

@Test
   public void  queryTest()
{
//      List<User>users=null;
//      String psc="select * from user";
//      users=jTemplate.query(psc, ParameterizedBeanPropertyRowMapper.newInstance(User.class));
//      for(User u:users)
//      {
//          System.out.println(u.getId()+":"+u.getUsername());
//      }
       String sql="select * from user where id="+1;
       System.out.println(jTemplate.queryForObject(sql, BeanPropertyRowMapper.newInstance(User.class)).getUsername());

   }


2.庆东师兄今天提了几个问题,我都没答上来,一个是问ref什么意思,我明明看过的,就是忘了,原单词是reference,参考的意思,这里是引用。

ref="jdbcTemplate"就是引用上一个bean里面的id=“jdbcTemplate”,见图中的两个下划线。ref=dataSource就是引用上一个bean里面的id=dataSource

<bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
   <property name="url" value="jdbc:mysql://localhost:3306/test"/>
   <property name="username" value="root"/>
   <property name="password" value="1234"/>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource" ref="dataSource"/>
</bean>

<bean id="myJdbcTemplate" class="com.ptteng.MyJdbcTemplate">
   <property name="template" ref="jdbcTemplate"/>
</bean>

property属性的意思,id=dataSource就是相当于后面的class类太长,我提取一个dataSource代表它,然后又被后面的bean引用。

springframework就是spring框架的意思。org.springframework.jdbc.core.JdbcTemplate,前面是一串的包名,后面JdbcTemplate是类名。

value是值的意思,就相当于name是个杯子,value是保温杯,也有可能是玻璃杯。

在Spring中,构成应用程序的骨干并由Spring IoC 容器管理的对象称为bean。bean是一个实例化,组装并由Spring IoC容器管理的对象。(终于明白为什么那么多bean了。)

ApplicationContext是应用环境的意思。

刚才我问慕洋师兄,为什么spring要有个XML配置呢?或者说要进行JDBCtemplate测试,为什么要建立个XML呢?可以这么理解,我们公司的项目,加上XML元数据,放入Spring箱内加工,就可以产生产品了。


dataSource是数据源,class和那四个name相当于对这个数据源情况的介绍。


3.问题来了,单说第二句,引用了数据源,数据源就是那个mysql数据库。JDBCTemplate是对数据库连接的增删改查,是不是可以这么理解:我对一个班级进行管理,下面就是班级的名字,比如三年二班。

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

   <property name="dataSource" ref="dataSource"/>


第三句呢?为什么有了JDBCTemplate,又有一个myJDBCTemplate,是不是myJDBCTemplate属于JDBCTemplate的一部分,yourJDBCTemplate也属于JDBCTemplate的一部分。JDBCTemplate就是总的,而你我只是调用了一部分??我好想有点明白这些程序语言的意思了。


明天的计划:我尝试把JDBCtemplate里面所有的语言都用自己的话解释一遍,这样说不定就能理解了,这是个浩大的任务。

遇到的问题:标号3,我理解的对不对

收获:还是有收获的,对JDBCtemplate多了很多了解


java任务开始时间:2017.12.05

预计demo时间:2018.01-05

可能有延期风险,原因是:基础太差,很多任务的教程都卡壳,进行不下去。

禅道链接地址:http://task.ptteng.com/zentao/project-task-501.html





返回列表 返回列表
评论

    分享到