发表于: 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
评论