SSM整合【SSM学习笔记】

SSM 环境搭建

目录

SSM 环境搭建

1.新建一个 JavaWeb 项目

2.添加依赖包

3.添加spring配置文件

4.配置web.xml文件,同时加载spring配置文件

5.创建数据表,添加项目包结构,包括实体类等

6.配置 spring.xml 文件

7.给dao,service,web包下使用注解创建对象,给service,web中的属性注入对象

8.创建 mybatis.xml 里面配置分页插件

9.创建 BooksMapper.xml 文件添加 sql 语句

10.运行过程

11.省略实现类 BooksDaoImpl.java

12.ssm整合mybatis反向生成工具


1.新建一个 JavaWeb 项目

2.添加依赖包

通过 properties 标签统一配置框架版本
<properties>
    <springversion>5.0.8.RELEASE</springversion>
</properties>

下面框架版本信息:
<version>${springversion}</version>

实例:

<properties>
    <java.version>11</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springversion>5.0.8.RELEASE</springversion>
</properties>

  <dependencies>
    <!-- 加入ServletAPI -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- MySQL依赖 start -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>
    <!-- 加入MyBatis 依赖 start -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>
    <!-- 引入Spring(包含SpringMVC) 依赖 start -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-oxm</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${springversion}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${springversion}</version>
    </dependency>

    <!-- 引用插件依赖:MyBatis整合Spring,如果mybatis版本在3.4及以上版本
       mybatis-spring的版本要在1.3以上	  -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- JSTL(JSP标准标签库) -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- 德鲁伊数据连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>
    <!-- pagehelper 分页 -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.1.6</version>
    </dependency>
    <!--处理json-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.5</version>
    </dependency>
    <!--javaee-->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <!--文件上传下载-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
  </dependencies>

3.添加spring配置文件

(spring.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

4.配置web.xml文件,同时加载spring配置文件

版本默认2.3 需要改成2.5
(web.xml)
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>Archetype Created Web Application</display-name>

  <!--1.配置前端控制器-->
   <servlet>
     <servlet-name>aa</servlet-name>
     <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
     <init-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:spring.xml</param-value>
     </init-param>
   </servlet>
  <servlet-mapping>
    <servlet-name>aa</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--2.处理post乱码-->
  <filter>
    <filter-name>bb</filter-name>
    <filter-class>
      org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>bb</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

5.创建数据表,添加项目包结构,包括实体类等

①:项目包结构

②:创建实体类 bean

//(Books.java)
public class Books {
    private int bookId;
    private String bookName;

    public int getBookId() {return bookId;}
    public void setBookId(int bookId) {this.bookId = bookId;}
    public String getBookName() {return bookName;}
    public void setBookName(String bookName) {this.bookName = bookName;}
}

③:dao

//(BooksDao.java[interface])
public interface BooksDao {
    public List<Books> getall();
}

//(BookDaoImpl.java)
public class BookDaoImpl  implements BooksDao {

    @Override
    public List<Books> getall() {
        return null;
    }
}

④:service

//(BooksService.java[interface])
public interface BooksService {
    public List<Books> getall();
}

//(BooksServiceImpl.java)
public class BooksServiceImpl implements BooksService {

    private BooksDao dao;

    @Override
    public List<Books> getall() {
        return dao.getall();
    }
}

⑤:web

//(BooksController.java)
public class BooksController {

    //匹配请求,调取service方法

}

6.配置 spring.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: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/tx
                           http://www.springframework.org/schema/tx/spring-tx.xsd">

  <!-- 1.配置数据源-->
    <bean id="db" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/guangdong"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
    <!--2.创建sqlSessionFactory-->
    <bean id="fac" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="db"></property>
        <property name="configLocation" value="classpath:mybatis.xml"></property> <!--指定mybatis的配置文件路径-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property><!--指定mybatis的mapper文件路径-->
    </bean>
    <!--3.创建SqlSessionTemplate,没无参构造-->
    <bean class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="fac"></constructor-arg>
    </bean>
    <!--4.配置事务-->
    <bean id="mytx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="db"></property>
    </bean>
    <tx:annotation-driven transaction-manager="mytx"></tx:annotation-driven>
    <!--5.启用springmvc注解-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--6.配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!--7.扫描注解包-->
    <context:component-scan base-package="com.yuyu"></context:component-scan>
    <!--8.配置静态资源访问-->
    <mvc:default-servlet-handler></mvc:default-servlet-handler>
</beans>

7.给dao,service,web包下使用注解创建对象,给service,web中的属性注入对象

③:dao 使用的注解:@Repository, @Resource

//(BooksDao.java[interface])
public interface BooksDao {
    public List<Books> getall();
}

//(BookDaoImpl.java)
@Repository
public class BookDaoImpl  implements BooksDao {

    @Resource  //该对象来源于配置文件
    private SqlSessionTemplate sqlSessionTemplate;
    @Override
    public List<Books> getall() {
        return sqlSessionTemplate.selectList("com.yuyu.dao.BooksDao.getall");//namespace+id
    }
}

④:service 使用的注解:@Service, @Resource

//(BooksService.java[interface])
public interface BooksService {
    public List<Books> getall();
}

//(BooksServiceImpl.java)
@Service
public class BooksServiceImpl implements BooksService {

    @Resource
    private BooksDao dao;

    @Override
    public List<Books> getall() {
        return dao.getall();
    }
}

⑤:web 配置controller文件 使用的注解:@Controller,@RequestMapping,@AutoWired,@Qualifier

//(BooksController.java)
@Controller
public class BooksController {

    @Resource
    private BooksService booksService;
    //匹配请求,调取service方法
    @RequestMapping("/getallbooks")
    public String getall(ModelMap map){
        List<Books> books = booksService.getall();
        map.addAttribute("booklist",books);
        return "show";
    }
}

8.创建 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>
    <typeAliases>
        <package name="com.yuyu.bean"></package>
    </typeAliases>

    <plugins>
        <!-- PageHelper4.1.6 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>

</configuration>

9.创建 BooksMapper.xml 文件添加 sql 语句

<?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.yuyu.dao.BooksDao">

      <select id="getall" resultType="books">
           select * from books
      </select>
</mapper>

10.运行过程

①程序启动先加载 web.xml 文件,web.xml 文件中扫描 spring.xml文件

<init-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:spring.xml</param-value>

</init-param>

② spring.xml 文件加载 mybatis.xml 文件和 mapper.xml 文件

<!--2.创建sqlSessionFactory-->

<bean id="fac" class="org.mybatis.spring.SqlSessionFactoryBean">

    <property name="dataSource" ref="db"></property>

    <property name="configLocation" value="classpath:mybatis.xml"></property> <!--指定mybatis的配置文件路径-->

    <property name="mapperLocations" value="classpath:mapper/*.xml"></property><!--指定mybatis的mapper文件路径-->

</bean>

这样就全部配置文件都加载进来了


 

11.省略实现类 BooksDaoImpl.java

①删除 BooksDaoImpl.java

如果使用省略实现类的方法,则:

(1) dao层省略了实现类

(2) dao 层只定义接口,由 spring 创建 dao 层对象以及扫描 mapper 文件

(3) 下面实现类省略

//(BookDaoImpl.java)
@Repository
public class BookDaoImpl  implements BooksDao {

    @Resource  //该对象来源于配置文件
    private SqlSessionTemplate sqlSessionTemplate;
    @Override
    public List<Books> getall() {
        return sqlSessionTemplate.selectList("com.yuyu.dao.BooksDao.getall");//namespace+id
    }
}

②修改 spring.xml 文件

将:

<!--3.创建SqlSessionTemplate,没无参构造-->
<bean class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="fac"></constructor-arg>
</bean>

改成:

<!--3.创建MapperScannerConfigurer,用于省略dao的实现类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="sqlSessionFactoryBeanName" value="fac"></property>
   <property name="basePackage"  value="com.yuyu.dao"></property><!--接口所在包的路径-->
</bean>


12.ssm整合mybatis反向生成工具

java项目的运行方法是:

右侧 maven Project 选项卡 ->plugins-> 找到 mybatis-generator-core ,双击运⾏就会⾃动⽣成

但在javaWeb项目中是找不到:mybatis-generator-core

需要手动配置:

在 edit configurations 中添加 maven 指令:

Name:mybatis

Command line: mybatis-generator:generate -e

注意:反向生成后,最好把该指令删除,否则不小心点了之后,又会生成一遍代码,尤其是mapper.xml文件中sql语 句又会生成一遍,运行时会报错。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值