发表于: 2017-12-05 00:31:22

3 796


今天主要是开发环境搭建

IDEA 跟MAVEN 安装没啥说的


然后是jdbcTemplate, 这个东西依赖了Spring的框架,所以需要在pom.xml 里增加对应的包

<!--mysql connector-->
   <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
   <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<!--spring jdbc support-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>

然后就是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"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


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

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

<bean name="userDaoImpl" class="com.bbq.dao.imple.UserDaoImpl">
<property name="dbHandle" ref="jdbcTemplate"></property>
</bean>

</beans>

然后写了Dao接口 简单的两个接口方法

package com.bbq.dao;

import com.bbq.beans.Student;

import java.util.List;

public interface UserDao {

List<Student> getByName(String name);

Student getById(int Id);
}

实现接口的类,这里主要是对数据库查询结果到实体的映射需要理解, 代码里是对每个字段逐一的赋值完成的,而且有多种的转换的方法(ResultSetExtractorRowCallbackHandlerRowMapper

但是本质上就是结果集到实体的转换


public class UserDaoImpl implements UserDao {
private JdbcTemplate dbHandle;

public JdbcTemplate getDbHandle() {
return dbHandle;
}

public void setDbHandle(JdbcTemplate dbHandle) {
this.dbHandle = dbHandle;
}

public List<Student> getByName(String name) {
String sql = "select * from students where name='" + name+"'";
return (List<Student>)dbHandle.query(sql, new RowMapper(){
public Object mapRow(ResultSet rs, int rowNumber) throws SQLException{
Student st = new Student();
st.setName(rs.getString("name"));
st.setQQ(rs.getString("QQ"));
st.setEntryDate(rs.getDate("start_time"));
st.setCareerype(rs.getInt("career_type"));
st.setSchool(rs.getString("school"));
st.setIdOnSite(rs.getString("online_id"));
st.setDailyReportUrl(rs.getString("report_url"));
st.setBrotherName(rs.getString("brother_name"));
st.setCreateAt(rs.getLong("create_at"));
st.setUpdateAt(rs.getLong("update_at"));
return st;
}
});
}

public Student getById(int Id) {
String sql = "select * from students where id=" + Id;
return dbHandle.queryForObject(sql, new RowMapper<Student>() {
public Student mapRow(ResultSet rs, int rowNumber) throws SQLException {
Student st = new Student();
st.setName(rs.getString("name"));
st.setQQ(rs.getString("QQ"));
st.setEntryDate(rs.getDate("start_time"));
st.setCareerype(rs.getInt("career_type"));
st.setSchool(rs.getString("school"));
st.setIdOnSite(rs.getString("online_id"));
st.setDailyReportUrl(rs.getString("report_url"));
st.setBrotherName(rs.getString("brother_name"));
st.setCreateAt(rs.getLong("create_at"));
st.setUpdateAt(rs.getLong("update_at"));
return st;
}
});
}

public static void main(String[] args){
UserDaoImpl userDaoImp = new UserDaoImpl();
Student st = userDaoImp.getById(1);
System.out.println(st.getBrotherName());
}
}


然后利用spring test框架对其测试了下,可以通过测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestStudentDao {

@Autowired
   private UserDaoImpl userDaoImpl;

@Test
   public  void testGetById(){
Student st = userDaoImpl.getById(1);
org.junit.Assert.assertEquals("张三", st.getName());
}

@Test
   public void testGetByName() {
List<Student> stWithSameName = userDaoImpl.getByName("张三2");
org.junit.Assert.assertEquals(1, stWithSameName.size());
}
}




明天的任务:

     mybaits 同时学习junit测试,重写一遍测试








返回列表 返回列表
评论

    分享到