手把手实战:eclipse 搭建 SpringMvc+mybatis 框架环境

说明

    spring mvc 的环境在 “手把手实战:eclipse 搭建 SpringMvc 框架环境”  中已经搭建完成,那么接下来此会在此基础上把 mybatis 添加进去(前一章由于有很多截图使得篇幅看起来很长,在这章我就不再粘一遍了。我只是把它的代码拿过来,改个工程 的名字来做这篇示例的)

环境准备

    eclipse
    jdk 1.8
    tomcat 7
    mysql 5


添加mybatis 所需要的 jar 包及其他包


添加mybatis 所需要的相关配置xml 

    在 “手把手实战:eclipse 搭建 SpringMvc 框架环境” 中有提过,我在web.xml 中已经配置好了所有src 下的 spring-*.xml 都会被我初始化,所以我这里的命名为 spring-applicationContext.xml。
其内容为

<?xml version="1.0" encoding="UTF-8"?>
    xsi:schemaLocation= "
    <!-- 开启注解 -->
   <mvc:annotation-driven/>   
    <!-- 扫描哪些包-->
   <context:component-scan base-package= "com.hlm" />
   
<!-- 配置数据源 -->
<bean id= "dataSource"   class= "org.springframework.jdbc.datasource.DriverManagerDataSource" >
    <property name= "username" value= "hlm" />
    <property name= "password" value= "admin" />
    <property name= "driverClassName"   value= "com.mysql.jdbc.Driver" />
    <property name= "url" value= "jdbc:mysql://localhost:3306/hlm_test" />        
</bean>
<!-- 配置Session工厂 -->
<bean id= "ssf"
class= "org.mybatis.spring.SqlSessionFactoryBean" >
    <property name= "dataSource" ref= "dataSource" >
    </property>
    <!-- 加载mybatis的mapper文件 -->
    <property name= "mapperLocations"
           value= "classpath:com/hlm/sql/*.xml" >
    </property>
</bean>
<!-- 扫描接口包 -->
<bean class= "org.mybatis.spring.mapper.MapperScannerConfigurer" >
    <property name= "basePackage" value= "com.hlm.dao" />
    <property name= "sqlSessionFactoryBeanName" value= "ssf" />
</bean>
</beans>

    数据源配的是我本地的mysql 库,这个我就不详细说了。下面的两项配置都是mybatis 有关的,一个是mapper 的xml的位置,另一个是mybatis 会自动装配的dao 接口的包位置。
    接下来要创建一个对应数据库的实体类和一个dao接口。位置如下


package com.hlm.bo;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * <ul> Users : 对应hlm_users 表的实体 </ul>
 * <li> id:主键 </li>
 * <li> userCode:用户唯一识别码 </li>
 * <li> userName:用户姓名 </li>
 * <li> sex:性别 </li>
 * <li> token:注册令牌,手机或邮箱 </li>
 * <li> tokenType:令牌类型。0为手机,1为邮箱 </li>
 * <li> createTime:注册时间 </li>
 * <li> password:密码 </li>
 * </p>
 * @author hlm
 *
 */
public class Users implements Serializable{
      private static final long serialVersionUID = -3452179176154022411L;
      private Long id ;
      private String userCode ;
      private String userName ;
      private Integer sex ;
      private String token ;
      private Integer tokenType ;
      private Date createTime ;
      private String password ;
     
      public Users(){
           
     }    
      public Long getId() {
            return id ;
     }
      public void setId(Long id ) {
            this . id = id ;
     }
      public String getUserCode() {
            return userCode ;
     }
      public void setUserCode(String userCode ) {
            this . userCode = userCode ;
     }
      public String getUserName() {
            return userName ;
     }
      public void setUserName(String userName ) {
            this . userName = userName ;
     }
      public Integer getSex() {
            return sex ;
     }
      public void setSex(Integer sex ) {
            this . sex = sex ;
     }
      public String getToken() {
            return token ;
     }
      public void setToken(String token ) {
            this . token = token ;
     }
      public Integer getTokenType() {
            return tokenType ;
     }
      public void setTokenType(Integer tokenType ) {
            this . tokenType = tokenType ;
     }
      public Date getCreateTime() {
            return createTime ;
     }
      public void setCreateTime(Date createTime ) {
            this . createTime = createTime ;
     }
      public String getPassword() {
            return password ;
     }
      public void setPassword(String password ) {
            this . password = password ;
     }
           
}
package com.hlm.dao;
import com.hlm.bo.Users;
public interface UsersDao {
      /**
      * 创建用户
      * @param bo
      */
      public void createUsers(Users bo );
     
}

    另外再创建一个包com.hlm.sql 来存放 *Mapper.xml ,也就是前面配置文件中有配置的




    UserMapper.xml 中内容如下,在此我只是简单地写了一条新增的语句。该ID对应我usersDao.java 接口中的新增方法名。

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"     
<mapper namespace= "com.hlm.dao.UsersDao" >
<insert id= "createUsers" parameterType= "com.hlm.bo.Users" >
    insert into hlm_users(id,user_code,user_name,
                       sex,token,create_time,password,
                                       token_type )
    values(#{id},#{userCode},#{userName},#{sex},#{token},#{createTime},#{password},#{tokenType})
</insert>
</mapper>

    最后我们改一下原来的UsersController.java

package com.hlm.controller;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.hlm.bo.Users;
import com.hlm.command.UsersCommand;
import com.hlm.dao.UsersDao;

@Controller
public class UsersController {

@Resource
private UsersDao usersDao ;

@RequestMapping("/sigup.do")                                                                
public ModelAndView  sigup(HttpServletRequest req){ 
ModelAndView mv = new ModelAndView();
 
UsersCommand cmd = new UsersCommand("小明",0,"[email protected]",1,"123456" );
   
Users bo = new Users();
BeanUtils.copyProperties(cmd, bo);
bo.setUserCode(bo.getUserName()+"1");
usersDao.createUsers(bo);

req.getSession().setAttribute("user", bo);
mv.addObject("password", bo.getPassword());
mv.addObject("userName", bo.getUserName());
System.out.println(bo.getPassword());
mv.setViewName("index");
  return mv;
}
}

    老样子,部署好tomcat 后启动,启动好后打开浏览器输入网址:http://localhost:8080/springmvcmybatis/

    点击后


    数据库多了一条数据



题外话

    我知道有些同学在网上看到这个mybatis 的xml 配置文件都叫 applicationContext.xml 并不像我这里叫 spring-applicationContext.xml。然后,他们会在web.xml 里多出如下的配置语句


    当然,这也是可以,只要能告诉web.xml 哪些xml 文件是需要读到的就行(其实这两种方式虽然效果一样,但实质上是有区别的,好学的同学可以搜一下相关的答案,我这里就不多说了)。但也有些同学采用上面这种方式会遇到问题,看到我上面的大红框里面有两个小红框没,这两个是必需的。有些同学从别年制的时候可能只复制了第一个框中的,第二个框中的就没复制,导致mybatis的配置文件没有生效,启动tomcat 的时候就可能遇到 dao 这个bean 没找到了,因为dao 的bean 的在 mybatis 的配置文件中定义生成 方式的。

最后附上数据表建表语句


CREATE TABLE `hlm_users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_code` varchar(40) NOT NULL COMMENT '用户唯一识别码',
  `user_name` varchar(50) NOT NULL COMMENT '用户姓名',
  `sex` int(3) DEFAULT NULL COMMENT '性别',
  `token` varchar(40) NOT NULL COMMENT '注册令牌,手机或邮箱',
  `create_time` date DEFAULT NULL COMMENT '注册时间',
  `token_type` int(3) NOT NULL COMMENT '令牌类型。0为手机,1为邮箱',
  `password` varchar(30) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`,`user_code`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

git 代码地址:https://github.com/mottohlm/springmvcmybatis

猜你喜欢

转载自blog.csdn.net/mottohlm/article/details/80472798