回顾:分层架构
表示层(视图-->控制器)-->业务逻辑层-->数据访问层-->持久层-->DB
C组件 B组件 D组件
课程目标:SSM(Spring+SpringMvc+Mybaits)
功能:实现学生查询
一、创建ssm工程:
1.利用包组织项目结构
2.导入三大框架的支持
导包:spring,spring,mybatis
添加配置:spring的配置文件,mybatis的配置文件,springmvc的配置文件,修改web.xml文件(配置核心控制器)
3.实现mybatis的反向工程
注意:修改mybatis配置文件,添加sql映射文件
二、spring整合mybatis
1.导入spring整mybatis的插件:mybatis-spring-1.2.0.jar
2.在spring配置文件中定义数据源(DataSource)组件
作用:用于连接数据库
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/dt72"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
3.创建sqlSessioFactory工厂对象
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
三、开发dao层组件
1.Dao接口中定义查询所有学生的方法:
List<Students> getAllStudent();
2.在sql映射文件中定义持久化操作
<select id="getAllStudent" resultType="Students">
select * from students
</select>
3.编写dao层实现类(后期可省)
注意:使用SqlSessionTemplate模板简化Mybatis的开发
public class StudentsMapperImpl implements StudentsMapper {
//定义sqlSessionTemplate属性 ????
private SqlSessionTemplate sqlSessionTemplate;
//略setter和getter
@Override
public List<Students> getAllStudent() {
return sqlSessionTemplate.selectList("com.grade.dao.StudentsMapper.getAllStudent");
}
}
4.在spring容器中定义dao层组件(后期可省)
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"></constructor-arg>
</bean>
<!-- 定义dao层组件 -->
<bean id="studentsMapper" class="com.grade.dao.impl.StudentsMapperImpl">
<property name="sqlSessionTemplate" ref="sqlSessionTemplate"></property>
</bean>
5.测试dao层组件
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
StudentsMapper mapper=(StudentsMapper)ctx.getBean("studentsMapper");
System.out.println(mapper.getAllStudent().size());
}
四、开发servie层组件
1.在业务接口中添加查询学生的方法:
List<Students> getAllStudent();
2.在实现类中实现学生查询
public class StudentServiceImpl implements StudentService {
//调用dao层接口 ??? 为了后期实现属性注入
private StudentsMapper studentsMapper;
@Override
public List<Students> getAllStudent() {
// TODO Auto-generated method stub
return studentsMapper.getAllStudent();
}
}
3.在spring配置文件中定义业务组件
<bean id="studentService" class="com.grade.service.impl.StudentServiceImpl">
<property name="studentsMapper" ref="studentsMapper"></property>
</bean>
五、编写控制器
@Controller
public class StudentController {
//使用autowired实现自动注入,不需要setter和getter
//默认按类型
@Autowired
private StudentService studentService;
@RequestMapping("/show.do")
public String show(Model model) throws Exception{
List<Students> list=studentService.getAllStudent();
model.addAttribute("list", list);
return "index";
}
}
六、前端jsp展示
<table>
<tr>
<td>学号</td><td>姓名</td><td>年龄</td><td>生日</td>
<td>操作</td>
</tr>
<c:forEach items="{l.xh }</td><td>{l.age }</td>
<td><fmt:formatDate value="{l.xh }">删除</a></td>
</tr>
</c:forEach>
</table>
七、在web.xml文件中启动spring容器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>