发表于: 2017-10-28 21:00:45
2 698
今天学习的内容:
用JDBCTemplate完成了对数据库的查询(按主键查找的数据和查询所有的数据)。
项目目录结构如下:
User类:
package jdbcTemplate.bean;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public void UserMod(int id,String username,String password) {
this.id = id;
this.username = username;
this.password = password;
}
}
UsersDao接口:
package jdbcTemplate.implement;
import jdbcTemplate.bean.User;
import java.util.List;
public interface UsersDao {
public List<User> getUserById(int id);
public List<User> listALL();
}
UsersImpl类:
package jdbcTemplate.implement;
import jdbcTemplate.bean.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;public class UsersImpl implements UsersDao{
private JdbcTemplate template;
public JdbcTemplate getTemplate(){return template;}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.template = jdbcTemplate;
}
public List<User> listALL(){
String sql = "select * from user";
return (List<User>) template.query(sql,new BeanPropertyRowMapper(User.class));
}
public List<User> getUserById(int id){
String sql = "select * from user where id = ?";
return(List<User>)template.query(sql, new BeanPropertyRowMapper(User.class),id);
}
}
applicationContext.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--引入外部属性文件↓-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--连接数据库的配置-->
<!--声明bean,,,未将DataSource声明为Bean,则无法使用数据库事务.-->
<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>
<!--配置jdbcTemplate,并装配DataSource数据源属性 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="user" class="jdbcTemplate.bean.User"></bean>
<bean id="usersImpl" class="jdbcTemplate.implement.UsersImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
jdbc.properties中的代码:
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test
jdbc.user=root
jdbc.password=123456
log4j.properties中的代码:
log4j.rootLogger=DEBUG, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} (%F:%L) - %m%n
测试类SelectTest:
import jdbcTemplate.bean.User;
import jdbcTemplate.implement.UsersDao;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
import org.apache.log4j.Logger;
public class SelectTest {
private static Logger logger = Logger .getLogger(SelectTest.class);
ClassPathXmlApplicationContext appConetxt = new ClassPathXmlApplicationContext("applicationContext.xml");
UsersDao usersDao = appConetxt.getBean(UsersDao.class);
int id = 5;
@Test
public void testGetUserById() throws Exception {
usersDao.getUserById(id);
logger.debug(usersDao.getUserById(id));
}
@Test
public void testUserList() throws Exception {
List<User> userList = usersDao.listALL();
for(User user: userList) {
logger.debug(user.toString());
}
}
}
按主键查找的执行代码的结果:
查询所有的数据:
数据库中的数据:
问题:
执行查询的时候出现了如下的错误:
然后百度了一下,在resources的目录下新建log4j.properties文件,在文件中加入如下代码:
log4j.rootLogger=DEBUG, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} (%F:%L) - %m%n
明天继续学习关于JDBCTemplate的内容。
评论