SpringBoot之SSH整合

SpringBoot

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lanou</groupId>
    <artifactId>ssh</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>ssh</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--alibaba-start-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <!--alibaba-end-->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.41</version>
        </dependency>
        <!--mybatis-start-->
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!--generator-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <!--mapper-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.2.4</version>
        </dependency>
        <!--pagehelper-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!--mybatis-end-->

        <!-- 引入 redis 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.29</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.0.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>


</project>

generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!--1.jdbcConnection設置數據庫連接-->
    <!--2.javaModelGenerator設置類的生成位置-->
    <!--3.sqlMapGenerator設置生成xml的位置-->
    <!--4.javaClientGenerator設置生成dao層接口的位置-->
    <!--5.table設置要進行逆向工程的表名以及要生成的實體類的名稱-->


    <context id="default" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="com.lanou.util.MyMapper"/>
        </plugin>

        <!-- optional,旨在創建class時,對註釋進行控制 -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--jdbc的數據庫連接 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/MVCDB?characterEncoding=utf-8"
                userId="root"
                password="123456">
        </jdbcConnection>


        <!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>


        <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
            targetPackage     指定生成的model生成所在的包名
            targetProject     指定在該項目下所在的路徑
        -->
        <!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">-->
        <javaModelGenerator targetPackage="com.lanou.model" targetProject="./src/main/java">
            <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否對model添加 構造函數 -->
            <property name="constructorBased" value="true"/>
            <!-- 是否對類CHAR類型的列的數據進行trim操作 -->
            <property name="trimStrings" value="true"/>
            <!-- 建立的Model對象是否 不可改變  即生成的Model對象不會有 setter方法,只有構造方法 -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>

        <!--mapper映射文件生成所在的目錄 爲每一個數據庫的表生成對應的SqlMap文件 -->
        <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->
        <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼
                type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper對象
                type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper對象
                type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口
        -->

        <!-- targetPackage:mapper接口dao生成的位置 -->
        <!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.lanou.dao" targetProject="./src/main/java">
            <!-- enableSubPackages:是否讓schema作爲包的後綴 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- tableName表名 domainObjectName生成的實體類名 -->
        <table tableName="User" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>


        <!-- geelynote mybatis插件的搭建 -->
    </context>
</generatorConfiguration>
反向生成
雙擊擊mybatis-generator下的mybatis-generator:generate
會自動生成mappers包與此包下的UserMapper.xml映射文件
還會自動生成dao包下的UserMapper接口,此接口與UserMapper.xml相對應
還好根據數據庫中的表自動生成model包下的實體類

這裏寫圖片描述

自動生成的mappers下的UserMapper.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.lanou.dao.UserMapper" >
  <resultMap id="BaseResultMap" type="com.lanou.model.User" >
    <!--
      WARNING - @mbg.generated
    -->
    <constructor >
      <idArg column="u_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="u_name" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="u_password" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="u_gender" jdbcType="VARCHAR" javaType="java.lang.String" />
    </constructor>
  </resultMap>
</mapper>
自動生成的User實體類
package com.lanou.model;

import javax.persistence.*;

public class User {
    @Id
    @Column(name = "u_id")
    private Integer uId;

    @Column(name = "u_name")
    private String uName;

    @Column(name = "u_password")
    private String uPassword;

    @Column(name = "u_gender")
    private String uGender;

    public User(Integer uId, String uName, String uPassword, String uGender) {
        this.uId = uId;
        this.uName = uName;
        this.uPassword = uPassword;
        this.uGender = uGender;
    }

    public User() {
        super();
    }

    /**
     * @return u_id
     */
    public Integer getuId() {
        return uId;
    }

    /**
     * @param uId
     */
    public void setuId(Integer uId) {
        this.uId = uId;
    }

    /**
     * @return u_name
     */
    public String getuName() {
        return uName;
    }

    /**
     * @param uName
     */
    public void setuName(String uName) {
        this.uName = uName == null ? null : uName.trim();
    }

    /**
     * @return u_password
     */
    public String getuPassword() {
        return uPassword;
    }

    /**
     * @param uPassword
     */
    public void setuPassword(String uPassword) {
        this.uPassword = uPassword == null ? null : uPassword.trim();
    }

    /**
     * @return u_gender
     */
    public String getuGender() {
        return uGender;
    }

    /**
     * @param uGender
     */
    public void setuGender(String uGender) {
        this.uGender = uGender == null ? null : uGender.trim();
    }
}
自動生成的dao層中的UserMapper
package com.lanou.dao;

import com.lanou.model.User;
import com.lanou.util.MyMapper;

public interface UserMapper extends MyMapper<User> {
}

繼承是生成時自帶的 不過需要在事先配置的文件中進行配置說明
MyMapper這個接口需要自己事先創建,MyMapper繼承了兩個接口
爲了合併這兩個接口中的方法

自己創建的util包下的MyMapper接口

package com.lanou.util;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface MyMapper<T> extends MySqlMapper<T>,Mapper<T> {

}

自己創建的application.yml

server:
  port: 8090
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/MVCDB?characterEncoding=utf-8
    username: root
    password: 123456

#mybatis
mybatis:
  type-aliases-package: com.lanou.model
  mapper-locations: classpath:mappers/*.xml

#mapper
#mappers 多個接口時逗號隔開
mapper:
  mappers: com.lanou.util.MyMapper
  not-empty: false
  identity: MYSQL

#pagehelper
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

UserControllerl類

package com.lanou.controller;

import com.github.pagehelper.PageHelper;
import com.lanou.dao.UserMapper;
import com.lanou.model.ConfigBean;
import com.lanou.model.User;
import com.mysql.jdbc.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@Controller
public class UserController {

@Autowired
private UserMapper userMapper;
@Autowired
private ConfigBean configBean;

@Value(value = "${page}")
private Integer size;

//@GetMapping(value = "/pages")
//@PostMapping
    @ResponseBody
    @RequestMapping("/pages")
    public List<User> selectPage(Integer page,User user){
        System.out.println("configBean"+configBean);

        PageHelper.startPage(page,size);
        //告訴是用哪個類來封裝
        Example example = new Example(User.class);
        //獲的criteria裏的查詢方法
         Example.Criteria criteria = example.createCriteria();
         if (!StringUtils.isEmptyOrWhitespaceOnly(user.getName())){
             criteria.andLike("name","%"+user.getName()+"%");
         }
         example.orderBy("age").desc();
      return   userMapper.selectByExample(example);
    }


//    @ResponseBody
//    @RequestMapping("/select")
//    public List<User> select(User user){
//
//        System.out.println("la la la la la ...");
//        System.out.println("user:"+user);
//
//
//        return userMapper.selectB();
//
//    }


    @ResponseBody
    @RequestMapping("/jiadelete")
    public int jiadelete(User user){

        System.out.println("la la la la la ...");
        System.out.println("user:"+user);
        user.setUserDeleteld(1);

        return userMapper.updateByPrimaryKeySelective(user);

    }

    @ResponseBody
    @RequestMapping("/delete")
    public int delete(User user){

        System.out.println("la la la la la ...");
        System.out.println("user:"+user);
        return userMapper.deleteByPrimaryKey(user.getId());

    }
    @ResponseBody
    @RequestMapping("/update")
    public int update(User user){

        System.out.println("la la la la la ...");
        System.out.println("user:"+user);
        return userMapper.updateByPrimaryKeySelective(user);

    }

    @ResponseBody
    @RequestMapping("/insert")
    public int insert(User user){

        System.out.println("la la la la la ...");
        System.out.println("user:"+user);
        return userMapper.insert(user);

    }

    @ResponseBody
     @RequestMapping("/findUser")
       public List<User> hellow(){

           System.out.println("la la la la la ...");

           return userMapper.selectAll();

       }

    @ResponseBody
    @RequestMapping("/lala")
    public String hello(){

        System.out.println("la la la la la ...");

        return "name";

    }
}


定義userMapper需要註解注入 這時UserMapper並沒有被引入Spring中   因此需要加上註解
讓Spring管理UserMapper
SshApplication
package com.lanou;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
// 對dao層的UserMapper進行註解
@MapperScan(basePackages = "com.lanou.dao")
public class SshApplication {

    public static void main(String[] args) {
        SpringApplication.run(SshApplication.class, args);
    }
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章