1
sql-access için Jdbc kullanan bir şey var. JdbcTemplate kullanabilir ama NamedParameterJdbcTemplate kullanamaz. Namedparam her zaman boş göstericiyi döndürürken jdbctemplate bir çekicilik gibi çalışır. İlkbaharda bir adım eksik miyim? İşte basitleştirilmiş kodlar var:Java yaylı otomatik teller Jdbctemplate ancak NamedParameterJdbcTemplate
yay data.xml:
<?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*:/db_connection.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>
</beans>
someDAOImpl.java:
/*
imports
*/
@Component
public class someDAOImpl implements someDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void thisDoesntWork(Integer intValue) {
String sql = "UPDATE table SET value = :value WHERE id = 1";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("value", intValue);
try {
namedParameterJdbcTemplate.update(sql, params);
} catch (Exception e) {
e.printStackTrace();
}
}
public ArrayList<ResultClass> thisWorks(Integer intValue) {
String sql = "SELECT * FROM table WHERE value = ?";
ArrayList<ResultClass> results = new ArrayList<ResultClass>();
try {
results = (ArrayList<ResultClass>) jdbcTemplate.query(sql, new Object[] { intValue }, new ResultClassMapper());
} catch (Exception e) {
e.printStackTrace();
}
return results;
}
}
Ah autowired gerekiyor! Ne kadar aptalım. İkisini de alacağını sanıyordum ama görünüşe göre sadece ilkini aldı. Şimdi çalışıyor! Teşekkür ederim :) –