发表于: 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);
}
实现接口的类,这里主要是对数据库查询结果到实体的映射需要理解, 代码里是对每个字段逐一的赋值完成的,而且有多种的转换的方法(ResultSetExtractor,RowCallbackHandler,RowMapper)
但是本质上就是结果集到实体的转换
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测试,重写一遍测试
评论