欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解SpringMVC和MyBatis框架开发环境搭建和简单实用

程序员文章站 2024-02-26 09:35:22
1、下载springmvc框架架包,下载地址: 点击下载 点击打开地址如图所示,点击下载即可   然后把相关的jar复制到lib下导入...

1、下载springmvc框架架包,下载地址:

点击下载

点击打开地址如图所示,点击下载即可
详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

然后把相关的jar复制到lib下导入

2、mybatis(3.4.2)下载

点击下载

mybatis中文文档地址


下载解压之后把jar复制到lib下导入,大概是这样子的

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

3、jdbc连接库还没有下载。。。这个是5.1.41版本的。。。

点击下载

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

解压之后这样子。。。

4、fastjson 阿里巴巴的json解析库


版本是1.2.24 这个是托管到了github上面的,地址是:点击进入

5、创建webproject

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

注意下一步有个选项,如果不勾选,默认是不会生成web.xml的

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

6、项目创建完毕,把之前的包都弄进来。。

web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="webapp_id" version="3.1">
 <display-name>coolweb</display-name>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>


 <servlet>
   <servlet-name>coolweb</servlet-name>
   <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>
   <init-param>
      <param-name>contextconfiglocation</param-name>
      <!-- <param-value>classpath:application-context.xml</param-value> -->
      <param-value>classpath:coolweb-servlet.xml</param-value> 
   </init-param><!-- classpath:只会到你的class路径中查找找文件; 
      classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. -->
   <load-on-startup>1</load-on-startup>
 </servlet>

  <!-- 如果不配置servlet-mapping服务器就无法响应/请求 -->
 <servlet-mapping>
    <servlet-name>coolweb</servlet-name>
    <url-pattern>/</url-pattern>
 </servlet-mapping>

</web-app>

7、在src下创建coolweb-servlet.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-4.3.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">


  <!-- 开启springmvc注解 -->
  <context:component-scan base-package="com.vincent.lwx"/>
  <mvc:annotation-driven/>


</beans>

8、在src下编写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"
  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-4.3.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">


  <context:component-scan base-package="com.vincent.lwx"/>
  <mvc:annotation-driven/>

  <!-- user实体类 -->
  <bean id="user" class="com.vincent.lwx.bean.user"/>

   <!-- 支持上传文件 --> 
  <bean id="multipartresolver" class="org.springframework.web.multipart.commons.commonsmultipartresolver">
    <property name="defaultencoding" value="utf-8"/>
    <!-- max size:10m -->
    <property name="maxuploadsize" value="10485760"/>  
  </bean> 

</beans>

user实体类要在这里注册

9、在src下编写mybatis.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>
  <environments default="development">
    <environment id="development">
      <transactionmanager type="jdbc" />
      <!-- 配置数据库连接信息 -->
      <datasource type="pooled">
        <property name="driver" value="com.mysql.jdbc.driver" />
        <!-- 注意3306后面是数据库名称 autoreconnect自动重连-->
        <property name="url" value="jdbc:mysql://localhost:3306/cool?useunicode=true&characterencoding=utf-8&usessl=false&autoreconnect=true" />
        <property name="username" value="root" />
        <property name="password" value="root" />
      </datasource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/vincent/lwx/dao/usermapping.xml" />
  </mappers>

</configuration>

10、log4j.xml配置

<?xml version="1.0" encoding="utf-8"?>
<configuration status="debug">
  <appenders>
    <console name="console" target="system_out">
      <thresholdfilter level="trace" onmatch="accept" onmismatch="deny" />
      <patternlayout
        pattern="%d{yyyy-mm-dd hh:mm:ss.sss} %-5level %class{36} %l %m - %msg%xex%n" />
    </console>
    <rollingfile name="rollingfile" filename="d:logs/schoolmallapi.log"
      filepattern="log/$${date:yyyy-mm}yimoservicerun-%d{mm-dd-yyyy}-%i.log.gz">
      <patternlayout pattern="%d{yyyy-mm-dd 'at' hh:mm:ss z} %-5level %class{36} %l %m - %msg%xex%n" />
      <sizebasedtriggeringpolicy size="15mb" />
    </rollingfile>
  </appenders>
  <loggers>
    <root level="debug">
      <appender-ref ref="rollingfile" />
      <appender-ref ref="console" />
    </root>
  </loggers>

  <!-- 下面是打印 mybatis语句的配置 --> 
  <logger name="com.ibatis" additivity="true"> 
    <level value="debug" /> 
  </logger> 

  <logger name="java.sql.connection" additivity="true"> 
    <level value="debug" /> 
  </logger> 

  <logger name="java.sql.statement" additivity="true"> 
    <level value="debug" /> 
  </logger> 

  <logger name="java.sql.preparedstatement" additivity="true"> 
    <level value="debug" /> 
  </logger> 

  <logger name="java.sql.resultset" additivity="true"> 
    <level value="debug" /> 
  </logger> 

  <root> 
    <level value="debug" /> 
    <appender-ref ref="console" /> 
<!--     <appender-ref ref="file" /> --> 
<!--     <appender-ref ref="framework" /> --> 
  </root> 
</configuration>

这个配置貌似有点问题,虽然不影响使用,不过我也没有去深入研究还,最近还要准备面试android哎。。。

现在差不多是这样子咯

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

11、环境搭建差不多了,现在开始撸代码,写一个注册的动能吧

简历一个实体类user.java

package com.vincent.lwx.bean;

import java.io.serializable;

import lombok.data;
import lombok.getter;
import lombok.setter;

/**  
* @title: user.java 
* @package com.vincent.lwx.bean 
* @description: todo(用一句话描述该文件做什么) 
* @author vincent  
* @date 2017年3月3日 下午6:36:58 
* @version v1.0  
*/
public class user implements serializable{

  /**
   * 序列化id
   */
  private static final long serialversionuid = -6375697395831845246l;

  /**
   * 用户id
   */
  private @getter string user_id;

  /**
   * 用户手机号码
   */
  private @setter@getter string phone;

  /**
   * 密码
   */
  private @setter@getter string password;

  /**
   * 用户名
   */
  private @setter@getter string nickname;

  /**
   * 用户头像地址
   */
  private @setter@getter string head;

  /**
   * 性别
   */
  private @setter@getter string sex;

  /**
   * 生日
   */
  private @setter@getter string birthday;

  /**
   * 生活状态(发表的说说)
   */
  private @setter@getter string live_status;


}

编写mybatis的实体类映射xml文件,就写个usermapping.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.vincent.lwx.mapping.usermapping">

  <!-- 根据手机号码查询用户是否存在 -->
  <select id="selectuser" parametertype="string" resulttype="com.vincent.lwx.bean.user">
    select * from user where phone = #{phone}
  </select>

</mapper>

我这里只写了一个,别的还没写,注册之前先查询一下手机号码是否已注册。。

注意这里的id 不能重复,要具有唯一性。parametertype是传入的参数类型,这里是string类型的phone,如果要传入多个参数可以使用user对象,或者map,resulttype返回结果类型,我这里是直接返回一个user对象,之前用jdbc直接连接数据库,返回的东西还要手动封装,这个快多了。。。

创建mybatisutils.java类,用来从数据库获取sqlsession对象的,sqlsession执行sql语句,和jdbc的statement对象差不多感觉。。。也可能我的感觉是错的,哈哈,还没看源码。。。

package com.vincent.lwx.db;

import java.io.ioexception;
import java.io.reader;
import java.util.timer;
import java.util.timertask;

import org.apache.ibatis.io.resources;
import org.apache.ibatis.session.sqlsession;
import org.apache.ibatis.session.sqlsessionfactory;
import org.apache.ibatis.session.sqlsessionfactorybuilder;

import com.vincent.lwx.util.eattimertask;


/**
 * @title: mybatisutils.java
 * @package com.vincent.julie.config
 * @description: todo(��һ�仰�������ļ���ʲô)
 * @author vincent
 * @date 2017��2��18�� ����12:05:35
 * @version v1.0
 */

public class mybatisutils {
  private static sqlsessionfactory sqlsessionfactory;
  private static sqlsession sqlsession;
  private static long timeinterval;//上一次运行的时间
  private static timertask task =null;

  static {
    string resource = "mybatis.xml";
    reader reader = null;
    try {
      reader = resources.getresourceasreader(resource);
    } catch (ioexception e) {
      system.out.println(e.getmessage());

    }
    sqlsessionfactory = new sqlsessionfactorybuilder().build(reader);
  }
  /**
   * 
   * @return
   */
  public static sqlsessionfactory getsqlsessionfactory() {
    return sqlsessionfactory;
  }

  /**
   * ��ȡsqlsession����
   * @return
   */
  public static sqlsession getsqlsession(){
    if (task != null){
       task.cancel(); //将原任务从队列中移除
     }
    task = new eattimertask();
    timeinterval = system.currenttimemillis();
     //间隔�?1小时
     long period = 1000 * 60 * 60;  
     //测试时间每分钟一�?
     //period = 1000 * 60;    
     timer timer = new timer(); 
     timer.schedule(task, timeinterval, period);

    if(sqlsessionfactory == null){
      sqlsessionfactory = mybatisutils.getsqlsessionfactory();
    }
    sqlsession = sqlsessionfactory.opensession();
    return sqlsession;
  }


}

这里有个计时器,我发现tomcat运行一段时间之后(听说是10小时)如果没有连接数据库,会出现异常。。
好,现在来写usercontroller.java类,处理客户端的请求

package com.vincent.lwx.controller;

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

import org.apache.ibatis.session.sqlsession;
import org.apache.log4j.logmanager;
import org.apache.log4j.logger;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.requestparam;

import com.vincent.lwx.bean.servicestatus;
import com.vincent.lwx.bean.user;
import com.vincent.lwx.db.mybatisutils;
import com.vincent.lwx.util.responseutils;

/**  
* @title: usercontrol.java 
* @package com.vincent.lwx.mapping 
* @description: todo(��һ�仰�������ļ���ʲô) 
* @author vincent  
* @date 2017��3��3�� ����6:28:37 
* @version v1.0  
*/
@controller
public class usercontroller {

  private static final logger logger = logmanager.getlogger(usercontroller.class);

  /**
   * 注册
   * @param phone
   * @param password
   * @param request
   * @param response
   */
  @requestmapping(value = "register", method = requestmethod.post)
  public void registeruser(@requestparam("phone")string phone,@requestparam("password")string password,httpservletrequest request,httpservletresponse response){
    if(hasuserphone(phone)){
      //用户已存在,无须再次注册
      responseutils.renderjsondatafail(response, servicestatus.runtime_exception, "该号码已被注册");
      return;
    }
  }


  /**
   * 根据手机号码查询用户是否存在
   * @param phone
   * @return
   */
  public boolean hasuserphone(string phone){
    /**sql 语句 完整的包名类名和方法id,*/
    string sql = "com.vincent.lwx.mapping.usermapping.selectuser";
    sqlsession session = mybatisutils.getsqlsession();
    /**返回一个user对象*/
    user user = session.selectone(sql, phone);
    if(user!=null){
      //用户已存在
      return true;
    }else{
      //用户不存在
      return false;
    }
  }
}

10、最后一步,让tomcat跑起来,好吧,下载tomcat、

这个版本是tomcat9.0的

如果不会部署的话可以看这里的 部署tomcat

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

11、东西写完了不叫最后一步,最后一步应该自己测试一下,google浏览器自带postman检查一下接口的正确性

详解SpringMVC和MyBatis框架开发环境搭建和简单实用 

因为我的数据库我已经自己注册了,所以提示是正确的,另外附上user表的sql语句:

create detabase cool;
//创建数据库并指定字符编码集
create database cool default character set utf8 collate utf8_general_ci;

//创建表
create table user(
user_id int(10) not null primary key auto_increment,
phone varchar(11) not null,
password varchar(16) not null,
nickname varchar(36),
head varchar(50),
sex varchar(3),
birthday varchar(10) default '1992-01-01',
live_status varchar(255)
)engine = innodb default charset=utf8;

//限制最小id=10000
 alter table user auto_increment=10000;设置已经存在的表的默认值
//限制手机号码唯一性
alter table user add unique(phone); 字段值唯一性约束

insert into user(phone,password) values(
'18696855784',
'555555');

github地址进入

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。