[实习记录]搭建简易SSM

//Markdown version
实习的时候第一次接触java Spring,mentor要求写一个基于SSM框架的数据库整理系统,感觉google上一些教程对新手不太友好,搭建过程中也出现很多问题,这里整理了一个搭建笔记,希望能帮到其他Spring新手。
(由于作者也是初学者,对spring没有深层次的理解,暂时只能给出解决问题的方法,可能无法解释出现问题的原因,见谅)。

一个建议:
如果真的是像我一样的新手,可以不要太在意每一步实现的意义,照着做就可以了,后来改程序改多了自然会有感觉。

搭建目标:
搭建一个简单的基于SSM的系统,实现数据库的增删改查操作。

数据库:H2(使用mysql只需改数据库部分配置)

构建工具:gradle(maven只需要根据格式改dependency部分)

开发环境:idea

1 使用idea创建新工程,选择gradle,springMVC。

文件目录结构:

/src/main/java/com.yourpackage/dao(生成mapper文件在这里)

/src/main/java/com.yourpackage/model(生成数据模型在这里)

/src/main/java/com.yourpackage/service(调用的服务接口)

/src/main/java/com.yourpackage/sevice/impl(服务接口的实现)

/src/main/resources/mapper(mapper对应sql的xml文件在这里)

resources中还有application.yml(也可以是.properties文件)、mybatis-config.xml和schema.sql(数据库初始化建库)和data.sql(数据库初始化操作如insert)

springboot的application.java在com.yourpackage中。

2 mybatis-config配置

可以直接使用mybatis插件,在file-settings-plugins中可以找到free mybatis plugin,它真的是免费的。安装完成后可以和其他文件一样右键new生成。

需要填的部分:

classpathentry location:是你的数据库jar包地址,一般在home/.gradle/caches/modules-2/files-2.1里可以找到。

jdbcconnection:
driverclass:

  • H2:org.h2.driver
  • mysql:com.mysql.jdbc.Driver

url:

  • H2:jdbc:h2:file:~/Desktop/yourdatabasename
    这里表示我把数据库文件存储在桌面上.
  • mysql:jdbc:mysql://localhost:3306/yourdatabasename
    userID和password就不用说了。

javaModelGenerator
targetPackage="com.yourpackage.model" ,数据模型地址

sqlMapGenerator targetPackage="mapper",sql语句xml地址

javaClientGenerator
targetPackage="com.yourpackage.dao",mapper文件地址

table tableName="yourtablename",配置你的数据表,后面的选项可以根据需要配置。

配置mybatis-config文件主要为了让我们可以用插件直接生成对应文件,实现一些常用功能,而不需要我们自己来写。对配置文件右键可以找到run选项,即可生成需要的文件,其中包括dao、model和mapper几个文件夹中的文件。我们可以看到基本的insert和select已经在mapper和dao中写好了。

3 application.yml配置文件

搭建一个简单框架需要的部分

mybatis:

  mapper-locations: classpath:mapper/*.xml

  type-aliases-package: com.yourpackage.dao #重要,否则程序会找不到dao文件地址

spring:

  h2:

    console:

    enabled: true #使用H2数据库需要添加,mysql则不需

    path: /h2-console #localhost:8080/h2-console,打开H2数据库交互界面地址

datasource:

    driver-class-name: org.h2.Driver

url: jdbc:h2:file:~/Desktop/yourdatabasename;MODE=MYSQL;

    username: sa

    password: sa #sa是H2常用用户和密码

如果mysql数据库只需要改datasource部分。

4 一份该程序中的gradle配置

buildscript {

ext {

springBootVersion ='1.4.2.RELEASE'

    }

repositories {

mavenCentral()

}

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

}

}

applyplugin:'java'

applyplugin:'org.springframework.boot'

jar {

baseName ='demo'

    version ='0.0.1-SNAPSHOT'

}

sourceCompatibility =1.8

targetCompatibility =1.8

repositories {

mavenCentral()

}

dependencies {

compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1')

compile('org.springframework.boot:spring-boot-starter-thymeleaf')

compile('com.alibaba:druid:1.0.26')

compile('mysql:mysql-connector-java:5.1.40')

runtime('com.h2database:h2')

testCompile('org.springframework.boot:spring-boot-starter-test')

    }

}

gradle基本缺哪个包就加哪个包就好了,https://mvnrepository.com/可以找到需要的包,部分包下面可能会说明要从那个地址引用,记得在repository中加上就好了。

5 如何使用mybatis提供的数据库操作

mybatis-plugin一般会提供insert和selectbyprimarykey等方法,我们可以在service接口类中声明这个方法,在impl中具体实现。

如在insert方法,我们在某个接口Service中可以这样写:

public interface EmployeeService {

void addEmployee(String employeename,String age,String salary);

}

然后在impl中implements实现:

@Service

public class EmployeeServiceImpl implements EmployeeService {

@Autowired

    EmployeeMapper employeeMapper;

@Override

    public void addEmployee(String employeename,String age,String salary) {

Employee employee=new Employee();

employee.setEmployeename(employeename);

......

employMapper.insert(employee);

}

然后我们在需要调用时直接注入一个service类,从service调用写好的方法。

这里只要看清楚xml文件中各个sql操作的参数和返回值就可以了。如果是findAll方法得到所有符合条件的结果可以使用List作返回。

使用spring时,只要在需要注入的类前标注@Service,而在使用之前用@Autowired直接注入,就不需要用new来实例化。如果在使用类时要一层一层嵌套地使用,一个类调用另一个类,就需要中间的部分全部使用注入而不能有手动new的对象,否则会报错。

6 将springboot的启动类application和需要执行的操作分来

这里我单独建了一个runnerable类来运行所有需要的任务,需要运行的任务只要在类之前加上@Component就可以了,如果要决定执行顺序还可以再加上@Order(value = 1)

7 其他问题

  • mybatis-config run出现问题可能是classpathentry的jar包不对,可以试着换一个地址。

  • 主程序出现问题可以使用bootrun来查看报错信息。

  • 出现找不到dao文件可以看看各个配置文件中dao文件夹的地址是否正确,或者yml文件中是否有加dao地址。

  • 可以使用dataAccessException来捕获sql部分异常。

  • 经常会碰发already use情况,不要慌,看一下有没有其他连接数据库的程序没有关闭,或者如果8080占用可以lsof然后kill掉,实在不行重启大法好。

如果出现问题可以联系我,但是同样作为初心者并不一定能解决。

你可能感兴趣的:([实习记录]搭建简易SSM)