3.使用SSM框架來實現對數據庫的增刪改查


  在上一篇博客,引入mybatis框架的基礎上,結合spring-mvc,實現代碼的進一步簡化。

  

 

操作:

  1.新建maven的web工程:

  項目整體視圖:(后面會一個個新建,這里總覽一下)

  2.導包:

   <!--數據庫操作-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    <!--負責在容器中找東西-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

    <!--創建一個容器-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

    <!--讀spring.xml new類-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

    <!--相當於servlet-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

    <!--連接池-->
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>

    <!--mysql-->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <!--事務管理器-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

    <!--用於事務管理器連接數據庫-->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

    <!--mybatis和spring連接橋梁-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>

    <!--自動轉json-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>

    <!--自動轉json-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>

    <!--自動轉json-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>

  

  3.編寫實體類及三層結構(service層、DAO層、控制層)

/**
 *  實體類
 *
*/
public class Bank {
    private int id;
    private String name;
    private int money;
    //自行補全構造器、get/set方法、重寫toString
}


/**
 *  DAO接口層
 *
*/
public interface BankDAO {
    public List<Bank> findAll();
    public Bank findOne(int id);
}


/**
 *  services層
 *
*/
@Service    // <bean id = "userService"  class = "com.zyp.myssm.services.UserService"/>
public class BankService {
    @Resource
    private BankDAO bdao;

    public List<Bank> findAll(){
        return bdao.findAll();
    }

    public Bank findOne(int id){
        return bdao.findOne(id);
    }
}


/**
 *  controller層
 *
*/
@RestController // 全是servlet , 所有都返回json
public class InitCtrl {
    // 不寫名字, spring會自動用類型去獲得對象getBean(UserService.class)
    @Resource
    private BankService bs;

    // 把每個方法看成一個小的servlet
    @RequestMapping("/init.do")
    public List<Bank> init() {
//  下面注釋掉的部分,是通過SSM從數據庫拉出來的數據直接上傳到hdfs上,不屬於SSM范疇,如有需要,記得導包
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
  //FileSystem fs = null;
  //try {
  //fs = FileSystem.get(new URI("hdfs://192.168.192.200:9000"), new Configuration());
  //} catch (IOException e) {
  //e.printStackTrace();
  //} catch (URISyntaxException e) {
   //e.printStackTrace();
  //}
  //try {
  //FSDataOutputStream fos = fs.create(new Path("/log/a.txt"));
  //List<Bank> lst = bs.findAll();
  //for (Bank bank : lst) {
  //String str = String.format("%s,%s,%s\n",bank.getId(),bank.getName(),bank.getMoney());

  //fos.write(str.getBytes());
  //}
  //fos.flush();
  //fos.close();
  //fs.close();
  //} catch (IOException e) {
  //e.printStackTrace();
  //}
  return bs.findAll();
}


@RequestMapping(
"/find.do")
  public Bank find(int id) {
  return bs.findOne(id);
  }
}

  

  4.配置文件

  按照1步驟里的目錄結構,新建好resources包,這里存放的都是所有配置文件。

1.>  其下的mapper包存放的xml文件,就是對應你實體類相應的sql執行語句(增刪改查等)。

2.>  其下的spring.xml文件(注意與mapper同級!都在resources包下!!!不要寫在mapper包里!!!),這里其實就是SSM框架中的spring-mvc,里面配置你鏈接數據庫的驅動(同之前博客2中的mybatis)以及第三方spring-mybatis的bean(相當於Java中的類)。通過這里的配置信息,去映射到你的項目、數據源、整個DAO層

3.>  webapp包下的WEB-INF下的web.xml文件,就是我們之前最初始的各個servlet,通過它的配置信息來掃描你的所有servlet(也就是我們Java類中的controller控制層)。

  

  下面我們逐個創建:

  1.在main包下,新建resources文件夾(與java文件夾同級),並且標記為Resourcces Root。

 

   2.在resources包下新建mapper包,其下新建bank.xml文件,內容如下:(這里用查詢舉例,一個不帶參數,一個帶參數按照id查找。增刪改同理)

<?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.zyp.myssm.dao.BankDAO">
    <select id="findAll" resultType="com.zyp.myssm.entity.Bank">
        select * from Bank
    </select>
    <select id="findOne" resultType="com.zyp.myssm.entity.Bank" parameterType="int">
        select * from Bank where id=#{id}
    </select>
</mapper>

  3.在resources包下新建spring.xml文件(注意文件格式!!!)

 

   內容如下:

<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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">
    <context:annotation-config></context:annotation-config>
    <context:component-scan base-package="com.zyp.myssm"></context:component-scan>

    <!--啟動mvc-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--以下是mybatis的鏈接數據庫的整合-->
    <!--配置一個數據源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://192.168.192.200:3306/mydemo?useSSL=false"></property>
        <property name="username" value="root"></property>
        <property name="password" value="okok"></property>
        <property name="initialSize" value="30"></property>
        <property name="maxActive" value="1000"></property>
        <property name="maxWait" value="1000"></property>
        <property name="minIdle" value="30"></property>
    </bean>
    <!--自動事務  可以讓用戶不commit-->
    <!--配置事務管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--自動提交配置-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
    <!--配置spring和mybatis整合-->
    <!--這不是mybatis的類,是第三方的 mybatis-spring-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="mapperLocations" value="classpath*:mapper/*.xml"></property>
    </bean>
    <!--掃描所有的dao接口-->
    <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zyp.myssm.dao"></property>
    </bean>
</beans>

  

  4.最后就是maven自帶的web.xml文件(可能建的工程或者版本不一,沒有就自己手動添加一個),內容如下:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>springmvc</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>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

 

  5.配置tomcat

 

進來后,點擊左上角+號

 

下拉找到tomcat,選擇本地

 

 接下來逐個對照配置

 

 然后選擇Deployment項進行編輯

 

  以上就是全部配置及代碼。確保你的數據庫能連接上,運行tomcat,彈出的頁面后添加對應的servlet名稱(推薦使用postman)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM