SSM基础
controller层:用来匹配url。需要导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表。
service层:进行业务逻辑判断,有接口和接口的实现方法。在接口的实现方法中需要注入入mapper层,mapper层是直接跟数据库打交道的,他也是个接口,只有方法名字,具体实现在mapper.xml文件里,service是供我们使用的方法。
mapper层=dao层,现在用mybatis逆向工程生成的mapper层,其实就是dao层。对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,而service层是针对我们controller,也就是针对我们使用者。service的impl是把mapper和service进行整合的文件。
model层=entity层。存放我们的实体类,与数据库中的属性值基本保持一致。
数据持久化操作就是指,把数据放到持久化的介质中,同时提供增删改查操作,比如数据通过hibernate插入到数据库中。
常用注解
1、@Controller
处理http请求
2、@RequestMapping("/")
3、@ResponseBody
表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。;返回值如果是字符串则直接返回字符串;如果是对象则返回json
4、@RestController :
是@Controller和@ResponseBody的组合注解,使用此注解的类下的所有方法默认都 返回字符串或json数据
5、@GetMapping
只支持Get,相当于@RequestMapping(value="/",method="RequestMethod.GET")
6、@PostMapping
只支持Post相当于@RequestMapping(value="/",method="RequestMethod.Post")
pom.xml 配置文件
集成Mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
build标签内要加入如下内容,否则容易导致mapper下的xml文件不被编译的情况,出现`Invalid bound statement(notfound):.....错误
注意:要生成数据库实体类之后添加,否则生成出错
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
application.properties配置文件
# 指定运行端口
server.port=8080
# 连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库的名字?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
# Thymeleaf 模板引擎
# thymeleaf配置,开发环境不启用缓存,正式环境下请启用缓存,提高性能
spring.thymeleaf.cache=false
# thymeleaf对html元素格式要求严格,设置它的mode为HTML,忘记结束标签后不会报错
spring.thymeleaf.mode=HTML
# 如果要在mapper.xml里使用model,不加此项要写完整路径com.....model...
mybatis.type-aliases-package=com.springboot.test.model
# 如果要将mapper的xml文件放在 resources目录下,对mybatis 进行如下配置
mybatis.mapper-locations=classpath:mappering/*.xml
Mybatis连接数据库反向生成实体类
1、在pom.xml的plugins里添加:
<!--mybatis代码自动生成插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!--配置文件的位置-->
<configurationFile>src/main/resources/GeneratorMapper.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
2、在resources文件夹里添加:GeneratorMapper.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>
<!--sql 连接数据库jar 注意路径-->
<classPathEntry location="C:/Users/xieyabo/Favorites/mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar" />
<!--配置table表信息内容体,targetRuntime制定采用MyBatis3版本-->
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的英文注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306?serverTimezone=UTC"
userId="root"
password="root">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型(PO)的包名和位置 生成model类,targetPackage制定model类的包名,targetProject制定生成的model放在哪个工程下面-->
<javaModelGenerator targetPackage="com.springboot.introduction.model" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成映射文件的包名和位置;生成MyBatis的Mapper.xml文件,targetPackage指定mapper.xml文件的包名,targetProject指定生成的mapper.xml放在-->
<sqlMapGenerator targetPackage="com.springboot.introduction.mapper" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成DAO的包名和位置;生成MyBatis的Mapper接口类文件,targetPackage指定Mapper接口类的包名,targetProject指定生成的Mapper接口放在哪个目录下-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.springboot.introduction.mapper" targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<!-- 注意:已生成的不要再生成,不然会覆盖已生成的文件 -->
<table catalog="数据库名字" tableName="student" domainObjectName="Student"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
3、View > Tool Window > Maven Projects > 调出Maven Projects窗口 > Plugins >
双击mybatis-genterator:generate
网友评论