SpringMVC+Mybatis整合的增删改查

简介: 本文基于 SPRING注解。本文使用Oracle数据库。项目文件下载地址:http://download.csdn.net/detail/u010634066/8188965项目总图:现在lib中导入所有所需jar包:这里就不叙述了一:在SRC下创建一个Bean包;在bean下面添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。

本文基于 SPRING注解。本文使用Oracle数据库。

项目文件下载地址:http://download.csdn.net/detail/u010634066/8188965

项目总图:

\


现在lib中导入所有所需jar包:这里就不叙述了

一:在SRC下创建一个Bean包;在bean下面添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。

package com.szz.bean;
 
import com.szz.base.bean.BaseObject;
 
 
  
/**
 * @author Administrator
 *
 */
public class User extends BaseObject {
         
    private String ID;
    /**
     * @return the iD
     */
    public String getID() {
        return ID;
    }
    /**
     * @param iD the iD to set
     */
    public void setID(String iD) {
        ID = iD;
    }
    /**
     * @return the nAME
     */
    public String getNAME() {
        return NAME;
    }
    /**
     * @param nAME the nAME to set
     */
    public void setNAME(String nAME) {
        NAME = nAME;
    }
    /**
     * @return the pASSWORD
     */
    public String getPASSWORD() {
        return PASSWORD;
    }
    /**
     * @param pASSWORD the pASSWORD to set
     */
    public void setPASSWORD(String pASSWORD) {
        PASSWORD = pASSWORD;
    }
    private String NAME;
    private String PASSWORD;
    /* (non-Javadoc)
     * @see com.szz.base.bean.BaseObject#toString()
     */
    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "User [ID=" + ID + ", NAME=" + NAME + ", PASSWORD=" + PASSWORD
                + "]";
 
 }
     
}

二、创建com.szz.dao包;里面用来定义需要对数据进行操作的实体类型DAO接口

package com.szz.dao;
 
import java.util.List;
 
import com.szz.bean.User;
 
/**
 * @author Administrator
 *
 */
public interface UserDao {
 
    /*
     * 查询
     */
    public List<user> selectAll();
 
    public User findById(String id);
     
    public User findByUserName(String userName);
     
    public int countAll();
     
    /*
     * 更新删除插入
     */
    public int insert(User user);
     
    public int update(User user);
     
    public int delete(String userName);
     
/*  //返回插入数据的ID
    public int findInsertUserID(User user);*/
     
    /*//批处理   插入多条数据
    public void insertUsers(List<user> users);*/
     
}

三、创建包com.szz.tables.xml(这样命名好像不好 定义com.szz.Mappers比较直观一点) 这个是用来写sql语句的xml文件 

<!--?xml version="1.0" encoding="UTF-8" ?-->  
  
  
 <!-- 这里定义好命名空间 -->
 <mapper namespace="com.szz.dao.UserDao">
    <select id="selectAll" resulttype="User">
        select * from SM_USER 
    </select>
     
    <select id="countAll">
        select count(*) c from SM_USER 
    </select>
     
    <select id="findById" parametertype="String" resulttype="User">
        select * from SM_USER where ID=#{ID}
    </select>
     
    <select id="findByUserName" parametertype="String" resulttype="User">
        select * from SM_USER where NAME=#{NAME}
    </select>
     
     
    <!-- <select id="findInsertUserID" paramterType="Srtring">
        select ID FROM SM_USER NAME =#{User.NAME}
    </select> -->
    <insert id="insert" parametertype="User">
        insert into SM_USER(ID,NAME,PASSWORD) VALUES(#{ID},#{NAME},#{PASSWORD})
    </insert>
     
     
    <update id="update" parametertype="User">
        update SM_USER 
        <set>
        <!-- 这里要注意后面的    逗号“,”  因为有多个参数需要用逗号隔开  否则会报错 -->
            <if test="NAME!=null">NAME=#{NAME},</if>
            <if test="PASSWORD!=null">PASSWORD=#{PASSWORD}</if>
        </set>
            where ID=#{ID}
    </update>
     
    <delete id="delete" parametertype="String">
        delete FROM SM_USER WHERE ID=#{ID}
    </delete>
 </mapper>

命名空间定义为我们需要对应的DAO接口;这里每个方法的ID都跟DAO里面的方法一一对应;

还有说明一下

?
1
parameterType= "User"
如果你没有在mybatis配置文件里面定义别名 这样写就会报错 你要把全类名写清楚
?
1
2
3
<typealiases>
        <typealias type= "com.szz.bean.User" alias= "User" >
    </typealias></typealiases>
四、spring的配置文件 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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemalocation="
           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.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/jee
           http://www.springframework.org/schema/jee/spring-jee.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd">
 
     
     
      <!-- 启动扫描szz下所有的注解--> 
    <context:component-scan base-package="com.szz">
     
    <mvc:annotation-driven ignore-default-model-on-redirect="true"> 
 
    <mvc:default-servlet-handler>
    <!-- 可通过注解控制事务
    <tx:annotation-driven />   -->  
     
    <!-- 导入外部的资源文件   一般都会把数据源的配置文件房子properties文件里面  然后用这种方式来导入  
    <context:property-placeholder location="classpath:jdbc.properties"/>-->
     
       <!--   
    配置DataSource数据源   配置mysql方式
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="maxActive" value="5" />
        <property name="maxIdle" value="3" />
        <property name="maxWait" value="1000" />
        <property name="defaultAutoCommit" value="true" />
        <property name="removeAbandoned" value="true" />
        <property name="removeAbandonedTimeout" value="60" />
    </bean>  -->
 
    <!-- 配置DataSource数据源    oracle方式-->
  
     
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver">
                  
                <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:myoracle">
                 
                <property name="username" value="SRC">
                <property name="password" value="src123456">
                 
 
    </property></property></property></property></bean> 
     
     
     
     
    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx 
    <bean id="transactionManager" 
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  -->  
     
      
<!-- 创建SqlSessionFactory,同时指定数据源 
 
 <span id="blogcontent" style="font-family:tahoma, arial, 宋体, sans-serif;line-height: 24px; background-color: #ffffff;">SqlSession也是由SqlSessionFactory来产生的,但是Mybatis-Spring给我们封装了一个SqlSessionFactoryBean,
在这个bean里面还是通过SqlSessionFactoryBuilder来建立对应的SqlSessionFactory,进而获取到对应的SqlSession。
通过SqlSessionFactoryBean我们可以通过对其指定一些属性来提供Mybatis的一些配置信息。
所以接下来我们需要在Spring的applicationContext配置文件中定义一个SqlSessionFactoryBean。</span>
  -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource">
         
        <property name="mapperLocations" value="classpath:com/szz/tables/xml/*.xml"> 
              
         <property name="configLocation" value="classpath:mybatis-config.xml"></property>  
    </property></property></bean> 
     
     
     
     
     <!-- jsp页面解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在/WEB-INF/views/目录下,查找XXX.jsp文件-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/">
        <property name="suffix" value=".jsp">
    </property></property></bean>
     
     
     
     
 <!--  
    Mapper接口所在包名,Spring会自动查找其下的Mapper  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.szz.dao" />  
    </bean>  
     -->
     
    <!-- ,MapperFactoryBean会从它的getObject方法中获取对应的Mapper接口,
    而getObject内部还是通过我们注入的属性调用
    SqlSession接口的getMapper(Mapper接口)方法来返回对应的Mapper接口的 -->
     
   <!-- 用户Dao -->
    <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">  
        <property name="mapperInterface" value="com.szz.dao.UserDao">  
        <property name="sqlSessionFactory" ref="sqlSessionFactory">  
    </property></property></bean>
     
     
     
</mvc:default-servlet-handler></mvc:annotation-driven></context:component-scan></beans>

配置文件说明: 详情见http://www.blogjava.net/ldwblog/archive/2013/07/10/401418.html


在定义SqlSessionFactoryBean的时候,dataSource属性是必须指定的,它表示用于连接数据库的数据源。当然,我们也可以指定一些其他的属性,下面简单列举几个:

  • mapperLocations:它表示我们的Mapper文件存放的位置,当我们的Mapper文件跟对应的Mapper接口处于同一位置的时候可以不用指定该属性的值。

  • configLocation:用于指定Mybatis的配置文件位置。如果指定了该属性,那么会以该配置文件的内容作为配置信息构建对应的SqlSessionFactoryBuilder,但是后续属性指定的内容会覆盖该配置文件里面指定的对应内容。

  • typeAliasesPackage:它一般对应我们的实体类所在的包,这个时候会自动取对应包中不包括包名的简单类名作为包括包名的别名。多个package之间可以用逗号或者分号等来进行分隔。

  • typeAliases:数组类型,用来指定别名的。指定了这个属性后,Mybatis会把这个类型的短名称作为这个类型的别名,前提是该类上没有标注@Alias注解,否则将使用该注解对应的值作为此种类型的别名。

    • plugins:数组类型,用来指定Mybatis的Interceptor。

    • typeHandlersPackage:用来指定TypeHandler所在的包,如果指定了该属性,SqlSessionFactoryBean会自动把该包下面的类注册为对应的TypeHandler。多个package之间可以用逗号或者分号等来进行分隔。

    • typeHandlers:数组类型,表示TypeHandler


    • 接下来就是在Spring的applicationContext文件中定义我们想要的Mapper对象对应的MapperFactoryBean了。通过MapperFactoryBean可以获取到我们想要的Mapper对象。MapperFactoryBean实现了Spring的FactoryBean接口,所以MapperFactoryBean是通过FactoryBean接口中定义的getObject方法来获取对应的Mapper对象的。在定义一个MapperFactoryBean的时候有两个属性需要我们注入,一个是Mybatis-Spring用来生成实现了SqlSession接口的SqlSessionTemplate对象的sqlSessionFactory;另一个就是我们所要返回的对应的Mapper接口了。

      定义好相应Mapper接口对应的MapperFactoryBean之后,我们就可以把我们对应的Mapper接口注入到由Spring管理的bean对象中了,比如Service bean对象。这样当我们需要使用到相应的Mapper接口时,MapperFactoryBean会从它的getObject方法中获取对应的Mapper接口,而getObject内部还是通过我们注入的属性调用SqlSession接口的getMapper(Mapper接口)方法来返回对应的Mapper接口的。这样就通过把SqlSessionFactory和相应的Mapper接口交给Spring管理实现了Mybatis跟Spring的整合。

      对应xml
<!-- 用户Dao -->
   <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">  
       <property name="mapperInterface" value="com.szz.dao.UserDao">  
       <property name="sqlSessionFactory" ref="sqlSessionFactory">  
   </property></property></bean>

MapperScannerConfigurer

利用上面的方法进行整合的时候,我们有一个Mapper就需要定义一个对应的MapperFactoryBean,当我们的Mapper比较少的时候,这样做也还可以,但是当我们的Mapper相当多时我们再这样定义一个个Mapper对应的MapperFactoryBean就显得速度比较慢了。为此Mybatis-Spring为我们提供了一个叫做MapperScannerConfigurer的类,通过这个类Mybatis-Spring会自动为我们注册Mapper对应的MapperFactoryBean对象。

如果我们需要使用MapperScannerConfigurer来帮我们自动扫描和注册Mapper接口的话我们需要在Spring的applicationContext配置文件中定义一个MapperScannerConfigurer对应的bean。对于MapperScannerConfigurer而言有一个属性是我们必须指定的,那就是basePackage。basePackage是用来指定Mapper接口文件所在的基包的,在这个基包或其所有子包下面的Mapper接口都将被搜索到。多个基包之间可以使用逗号或者分号进行分隔。最简单的MapperScannerConfigurer定义就是只指定一个basePackage属性,如:

Xml代码

bean>

这样MapperScannerConfigurer就会扫描指定基包下面的所有接口,并把它们注册为一个个MapperFactoryBean对象。

五、创建mybatis-config.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
   
<configuration>
     
 
 
<!--    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
                <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:LEARN" />
                <property name="username" value="system" />
                <property name="password" value="src123456" />
            </dataSource>
        </environment>
    </environments> -->
<!--别名定义-->
 <typealiases>
        <typealias type="com.szz.bean.User" alias="User">
    </typealias></typealiases> 
 
  
  
 
    <!-- 映射文件,存放sql语句的配置文件 -->
    <!-- <mappers>
        <mapper resource="com/szz/tables/xml/UserDaoMapper.xml" />
    </mappers> -->
</configuration>

六、创建services接口

package com.szz.service;
 
import java.util.List;
 
import com.szz.bean.User;
 
public interface UserService {
 
    public List<user> getUsers();
     
    /*
     * 濡傛灉ID涓虹┖灏辨壘username    濡傛灉username涓虹┖灏辨壘ID锛?閮藉~鎸夌収ID
     */
    public User getUserInfo(String ID,String userName);
     
    public int getCount();
     
     
//  public int saveUser(User user);
     
    public int insertUser(User user);
    public int updateUser(User user);
     
    public int deleteUser(String ID);
}

七‘services接口的实现类 serviceImpl

*/
package com.szz.service.impl;
 
import java.util.List;
 
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import com.szz.bean.User;
import com.szz.dao.UserDao;
import com.szz.service.UserService;
 
/**
 * @author Administrator
 *
 */
@Service("userService")
public class UserServiceImpl implements UserService {
 
    @Autowired
    private UserDao userDao;
    /*
    @Autowired
    private SqlSessionTemplate sessionTemplate;*/
     
 
    public UserDao getUserDao() {
        return userDao;
    }
 
    /**
     * @param userDao the userDao to set
     */
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
 
    @Override
    public List<user> getUsers() {
        // TODO Auto-generated method stub
        return userDao.selectAll();
        //return sessionTemplate.getMapper(UserDao.class).selectAll();
    }
 
    @Override
    public User getUserInfo(String ID, String userName) {
        // TODO Auto-generated method stub
        if(ID!=null){
            return userDao.findById(ID);
        }
        else
            return userDao.findByUserName(userName);
    }
 
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return userDao.countAll();
    }
 
    @Override
    public int insertUser(User user) {
        // TODO Auto-generated method stub
            return userDao.insert(user);
    }
     
    @Override
    public int updateUser(User user) {
        // TODO Auto-generated method stub
            return userDao.update(user);
    }
 
    @Override
    public int deleteUser(String ID) {
        // TODO Auto-generated method stub
        return userDao.delete(ID);
    }
     
     
}

八、创建控制类controller包/**

package com.szz.action;
 
import java.util.ArrayList;
import java.util.List;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
 
 
import com.szz.base.acion.BaseAction;
import com.szz.bean.User;
import com.szz.service.UserService;
 
/**
 * @author Administrator
 *
 */
@Controller
@RequestMapping(value="/user")
public class UserAction extends BaseAction {
    @Autowired
    private UserService userService;
     
     
     
    @RequestMapping(value="/login",method=RequestMethod.POST)
        public String login(){ 
         
            return "redirect:/user/userList";
        }
      
    @RequestMapping(value="userList")
    public ModelAndView showAll(){
        System.out.println("index......");
        ModelAndView MV = new ModelAndView("user/index");
        List<user> userList = new ArrayList<user>();
        userList = userService.getUsers();
        MV.addObject("userList",userList);
        return MV;
    }
    @RequestMapping(value="/add")
    public ModelAndView login(HttpServletRequest request,@RequestParam(value="username", required=true, defaultValue="szz") String name){ 
        System.out.println("/user/login....");
        ModelAndView mv = new ModelAndView("user/success");  
        mv.addObject("add", "娣诲姞"); 
        return mv;  
    }
    @RequestMapping(value="/edituser")
    public ModelAndView edit(@RequestParam(value="ID") String ID){
        ModelAndView mv = new ModelAndView("user/edit");
        User user = userService.getUserInfo(ID, null);
        mv.addObject("user",user);
        return mv;
    }
     
    @RequestMapping(value="/deleteuser")
    public String deleteuser(@RequestParam(value="ID") String ID){
        userService.deleteUser(ID);
        return "redirect:/user/userList";
    }
    @RequestMapping(value="/userset",method=RequestMethod.POST)  
    public String user(@ModelAttribute("user")User user ) {
         System.out.println(user.getNAME());
         return "user/success";   
    }
     
    @RequestMapping(value="/insertuser",method=RequestMethod.POST)  
    public String insertUser( User userInfo ) throws Exception {  
        userService.insertUser(userInfo);
        return "redirect:/user/userList";
    }
     
    @RequestMapping(value="/updateuser",method=RequestMethod.POST)  
    public String updateUser( User userInfo ) throws Exception {  
        userService.updateUser(userInfo);
        return "redirect:/user/userList";
    }
     
}

九、web.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     
     
     <servlet>
        <servlet-name>Dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath*:spring-context.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
     
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

index.jsp
	
<form action="/SpringMvcMybatisFreeMarker/user/login" method="post">
     用户ID:<input name="id" value="" type="text">
     <br>用户名称:<input id="username" name="username" value="" type="text">
     <br>用户密码:<input name="password" value="" type="text">
     <br><input value="提交" type="submit">
</form>

user/index.jsp

<form action="user/insertuser" method="post">
<table>
 
        <tbody><tr>
          
        <th>ID</th>
        <td><input name="ID" type="text"> </td>
    </tr>
    <tr>
    </tr><tr>
          
        <th>账号</th>
        <td><input name="NAME" type="text"> </td>
    </tr>
    <tr>
          
        <th>密码</th>
        <td><input name="PASSWORD" type="text"></td>
    </tr>
    <tr>
        <td colspan="2"><input value="添加" type="submit"> </td>
    </tr>
</tbody></table>
</form>
 
<c:foreach items="${userList}" var="user">
    </c:foreach><table>
    <tbody><tr>
        <th>id</th>
        <th>账号</th>
        <th>密码</th>
        <th>功能</th>
    </tr>
      
    <tr>
        <td>${user.ID}</td>
        <td>${user.NAME}</td>
        <td>${user.PASSWORD}</td>
        <td>修改   删除 </td>
    </tr>
  
</tbody></table>

user/edit. jsp

<form action="user/updateuser" method="post">
<input name="ID" value="${user.ID}" type="text">
<table>
    <tbody><tr> 
        <th>账号</th>
        <td><input name="NAME" value="${user.NAME}" type="text"></td>
    </tr>
    <tr>
          
        <th>密码</th>
        <td><input name="PASSWORD" value="${user.PASSWORD}" type="text"></td>
    </tr>
    <tr>
        <td colspan="2"><input value="修改" type="submit"> </td>
    </tr>
</tbody></table>
</form> 

访问:http://localhost:8080/SpringM vcMybatisFreeMarker/index.jsp

/**本文链接/http://www.2cto.com/kf/201411/354983.html

相关文章
|
2月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
27天前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
52 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
93 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
3月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
44 1
|
3月前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查