发表于: 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的内容。


返回列表 返回列表
评论

    分享到