原文地址:http://blog.csdn.net/zangjiwei/article/details/44675001
这次用到了这个数据库框架,要自己整合,顺便把一些个人感觉有坑的地方,按照一遍看懂的模式来做个记录
结构图:
首先来配置spring-mvc.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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
- <description>Spring MVC Configuration</description>
- <!-- 启动Springmvc注解驱动 ,主要作用于@Controller激活该模式下面是一种简写形式它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter, 是spring MVC为@Controllers分发请求所必须的 -->
- <mvc:annotation-driven/>
- <!-- 使用Annotation自动注册Bean,只扫描@Controller -->
- <context:component-scan base-package="com.mhsk.controller" use-default-filters="false"><!-- base-package 如果多个,用“,”分隔 -->
- <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
- <!-- 视图文件解析配置 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes -->
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <property name="maxUploadSize" value="10485760" />
- </bean>
- </beans>
接下来是spring-context.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:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"
- default-lazy-init="true">
- <description>Spring Configuration</description>
- <!-- 加载配置文件 -->
- <context:property-placeholder ignore-unresolvable="true" location="classpath*:/jdbc.properties"/>
- <!-- 使用Annotation自动注册Bean,解决事务失效问题,在主容器中不扫描以@Controller注解,在SpringMVC中只扫描@Controller注解 -->
- <context:component-scan base-package="com.mhsk.controller">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
- <!-- 自动扫描(自动注入) -->
- <context:component-scan base-package="com.mhsk.service" />
- </beans>
关键配置spring-context-mybatis.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:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"
- default-lazy-init="true">
- <description>Mybatis Configuration</description>
- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName">
- <value>${jdbc_driverClassName}</value>
- </property>
- <property name="url">
- <value>${jdbc_url}</value>
- </property>
- <property name="username">
- <value>${jdbc_username}</value>
- </property>
- <property name="password">
- <value>${jdbc_password}</value>
- </property>
- <!-- 连接属性 -->
- <property name="connectionProperties">
- <value>clientEncoding=UTF-8</value>
- </property>
- </bean>
- <!-- Mybatis begin -->
- <!-- myBatis文件 -->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
- <property name="configLocation" value="classpath:mybatis-config.xml" />
- </bean>
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="com.mhsk.dao" />
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
- </bean>
- <!-- Mybatis end -->
- <!-- 配置事务管理器 -->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource" />
- </bean>
- </beans>
这里最关键的就是配置sqlsessionfactory,还有就是mapper.xml的路径
这里配置的时候老是找不到mapper,
<property name="configLocation" value="classpath:mybatis-config.xml" />
这里是把mapper配置到mybatis-config.xml,如果你感觉麻烦,也可以配成<property name="mapperLocations" value="classpath*:com/mhsk/dao/*.xml" />
但是注意,这里如果换成这种配置的话,要把mapper文件和dao借口放在一个包里
mybatis-config.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <typeAliases>
- <!-- give a alias for model -->
- <typeAlias alias="mhskUser" type="com.mhsk.model.MhskUser"></typeAlias>
- </typeAliases>
- <mappers>
- <mapper resource="com/mhsk/mapper/MhskUsermapper.xml" />
- </mappers>
- </configuration>
MhskUser实体类
- package com.mhsk.model;
- public class MhskUser {
- private Integer id;
- private String user_name;
- private String password;
- private Integer pageNow;
- private Integer pageSize;
- public Integer getPageNow() {
- return pageNow;
- }
- public void setPageNow(Integer pageNow) {
- this.pageNow = pageNow;
- }
- public Integer getPageSize() {
- return pageSize;
- }
- public void setPageSize(Integer pageSize) {
- this.pageSize = pageSize;
- }
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getUser_name() {
- return user_name;
- }
- public void setUser_name(String user_name) {
- this.user_name = user_name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
dao:
- package com.mhsk.dao;
- import java.util.List;
- import com.mhsk.model.MhskUser;
- //@MyBatisDao
- public interface MhskUserMapper {
- public List<MhskUser> save();
- public void delete(int id);
- public void insert(MhskUser mhskUser);
- public void update(MhskUser mhskUser);
- }
mapper.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.mhsk.dao.MhskUserMapper">
- <!-- 查询所有mhskUser 返回resultMap类型-->
- <resultMap type="com.mhsk.model.MhskUser" id="mhskUserResult">
- <result column="id" property="id" />
- <result column="user_name" property="user_name" />
- <result column="password" property="password" />
- <result column="pageNow" property="pageNow" />
- <result column="pageSize" property="pageSize" />
- </resultMap>
- <select id="save" resultMap="mhskUserResult">
- select * from mhsk_user
- </select>
- <!-- 新增mhskUser 参数类型为mhskUser-->
- <insert id="insert" parameterType="mhskUser">
- insert into mhsk_user(id,user_name,password)
- values(#{id},#{user_name},#{password})
- </insert>
- <!-- 更新mhskUser 参数类型为mhskUser-->
- <update id="update" parameterType="mhskUser">
- update mhsk_user
- set mhsk_user.user_name = #{user_name},mhsk_user.password =#{password}
- where mhsk_user.id=#{id}
- </update>
- <!-- 删除mhskUser 参数类型为int-->
- <delete id="delete" parameterType="int">
- delete from mhsk_user
- where mhsk_user.id = #{id}
- </delete>
- </mapper>
MhskUserService接口
- package com.mhsk.service;
- import java.util.List;
- import com.mhsk.model.MhskUser;
- public interface MhskUserService {
- public List<MhskUser> save();
- public void delete(int id);
- public void update(MhskUser mhskUser);
- public void insert(MhskUser mhskUser);
- }
MhskUserServiceImpl实现类
- package com.mhsk.service.impl;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.mhsk.dao.MhskUserMapper;
- import com.mhsk.model.MhskUser;
- import com.mhsk.service.MhskUserService;
- @Service(value="mhskUserService")
- public class MhskUserServiceImpl implements MhskUserService {
- @Autowired
- private MhskUserMapper mhskUserMapper;
- @Override
- public List<MhskUser> save() {
- return mhskUserMapper.save();
- }
- @Override
- public void delete(int id) {
- mhskUserMapper.delete(id);
- }
- @Override
- public void update(MhskUser mhskUser) {
- mhskUserMapper.update(mhskUser);
- }
- @Override
- public void insert(MhskUser mhskUser) {
- mhskUserMapper.insert(mhskUser);
- }
- }
MhskUserController
- package com.mhsk.controller;
- import java.util.List;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- import com.mhsk.model.MhskUser;
- import com.mhsk.service.MhskUserService;
- @Controller
- @RequestMapping(value="mhskUser")
- public class MhskUserController {
- @Resource(name="mhskUserService")
- private MhskUserService mhskUserService;
- @RequestMapping(value="select")
- public ModelAndView login(HttpServletRequest request){
- List<MhskUser> mhskUser=mhskUserService.save();
- request.setAttribute("mhskUser", mhskUser);
- ModelAndView mv = new ModelAndView("login");
- return mv;
- }
- @RequestMapping(value="page")
- public ModelAndView page(HttpServletRequest request,int pageNow,int pageSize){
- List<MhskUser> mhskUser=mhskUserService.save();
- request.setAttribute("mhskUser", mhskUser);
- ModelAndView mv = new ModelAndView("login");
- return mv;
- }
- @RequestMapping(value="delete")
- public ModelAndView delete(HttpServletRequest request,int id){
- mhskUserService.delete(id);
- List<MhskUser> mhskUser=mhskUserService.save();
- request.setAttribute("mhskUser", mhskUser);
- ModelAndView mv = new ModelAndView("login");
- return mv;
- }
- @RequestMapping(value="addall")
- public ModelAndView addall(){
- ModelAndView mv = new ModelAndView("add");
- return mv;
- }
- @RequestMapping(value="add")
- public ModelAndView add(HttpServletRequest request,String user_name,String password){
- MhskUser mhskUser=new MhskUser();
- mhskUser.setUser_name(user_name);
- mhskUser.setPassword(password);
- mhskUserService.insert(mhskUser);
- List<MhskUser> mhskUserall=mhskUserService.save();
- request.setAttribute("mhskUser", mhskUserall);
- ModelAndView mv = new ModelAndView("login");
- return mv;
- }
- @RequestMapping(value="updateall")
- public ModelAndView selectbyid(HttpServletRequest request,String user_name,String password){
- System.out.println(user_name);
- System.out.println(password);
- request.setAttribute("user_name", user_name);
- request.setAttribute("password", password);
- ModelAndView mv = new ModelAndView("update");
- return mv;
- }
- @RequestMapping(value="update")
- public ModelAndView update(HttpServletRequest request,String user_name,String password){
- MhskUser mhskUser=new MhskUser();
- mhskUser.setUser_name(user_name);
- mhskUser.setPassword(password);
- mhskUserService.update(mhskUser);
- List<MhskUser> mhskUserll=mhskUserService.save();
- request.setAttribute("mhskUser", mhskUserll);
- ModelAndView mv = new ModelAndView("login");
- return mv;
- }
- }
login.jsp
- <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- </head>
- <body>
- <a href="http://localhost:8080/mhsk_bzhang/mhskUser/addall.do">新增</a></br>
- <c:forEach items="${mhskUser}" var="item">
- <td>${item.id }</td>
- <td>${item.user_name }</td>
- <td>${item.password }</td>
- <td><a href="http://localhost:8080/mhsk_bzhang/mhskUser/delete.do?id=${item.id}">删除</a></td>
- <td><a href="http://localhost:8080/mhsk_bzhang/mhskUser/updateall.do?user_name=${item.user_name}&password=${item.password}&id=${item.id}">修改</a></td>
- </br>
- </c:forEach>
- <a href="http://localhost:8080/mhsk_bzhang/mhskUser/page.do?pageNow=${item[1].id-5}&pageSize=5">上一页</a>
- <a href="http://localhost:8080/mhsk_bzhang/mhskUser/page.do?pageNow=${item[1].id+5}&pageSize=5">下一页</a>
- </body>
- </html>
OK 大部分就写完了
写几个需要注意的地方:
mapper.xml中<mapper namespace="com.mhsk.dao.MhskUserMapper">属性找的是mapper,
- <resultMap type="com.mhsk.model.MhskUser" id="mhskUserResult">
- <result column="id" property="id" />
- <result column="user_name" property="user_name" />
- <result column="password" property="password" />
- <result column="pageNow" property="pageNow" />
- <result column="pageSize" property="pageSize" />
- </resultMap>
parameterType="mhskUser" 为参数的类型 例如根据id查询 就应该这样写parameterType="Java.lang.Integer"
问题来了,这里只让传一个参数,传2个的话接不到,比如分页,要传过来2个int
那就在dao接口里这样写
public List<MhskUser> select (@Param(value="startRow")int startRow,@Param(value="pageSize")int pageSize);
把参数注进来就可以接到,测试通过了的
另外service层必须要写接口,不然就会报错,不知道为什么
OK 写完了,为自己留存~~~
整个项目下载地址 :http://download.csdn.NET/detail/zangjiwei/8538983