如何看网站做的好坏,vs2017做网站,wordpress简约博客主题,广告推广营销网站本人是Java开发者#xff0c;有面向对象的基础#xff0c;而Scala也是面向对象的语言#xff0c;学习后可快速入门。通过学习Scala的面向对象(和java面向对象类似)、Scala的高级函数(map,reduce等#xff0c;和Java8中的stream编程类似)、Scala的隐式转换(在Java中可通过sp…本人是Java开发者有面向对象的基础而Scala也是面向对象的语言学习后可快速入门。通过学习Scala的面向对象(和java面向对象类似)、Scala的高级函数(map,reduce等和Java8中的stream编程类似)、Scala的隐式转换(在Java中可通过spring aop实现增强Scala的隐式转换较为方便)、Scala的模式匹配(类似Java的switch语句但使用的访问很广)。这里通过Scala结合spring boot来实现spring mvc接口的开发。添加pom依赖先搭建spring boot项目这里不细说org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.scala-langscala-library${scala.version}org.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-javaorg.springframework.bootspring-boot-maven-pluginnet.alchim31.mavenscala-maven-plugin3.2.1compile-scalacompileadd-sourcecompiletest-compile-scalatest-compileadd-sourcetestCompileincremental${scala.version}/.,bvc;-deprecation-Xms64m-Xmx1024m其中Scala的plugin用于编译、测试、打包scala的程序配置server:port: 7777spring:datasource:driver-class-name: com.mysql.jdbc.Driver #数据库驱动url: jdbc:mysql://localhost:3306/test?useSSLfalse #本地数据库url,先在本地数据库中建立test这个库username: root #数据库用户名password: 191016 #数据库密码jpa:hibernate:ddl-auto: update #每次运行程序没有表格会新建表格表内有数据不会清空只会更新database: mysql项目结构image.png其中controller层为程序入口domain层为实体类service层为业务逻辑层提供事务控制repository层为数据持久化层实体类EntityTableclass Person {IdGeneratedValueBeanPropertyvar id:Integer _BeanPropertyvar name:String _BeanPropertyvar sex:String _}scala中无get/set方法repository持久化层trait PersonRepository extends CrudRepository[Person,Integer]{}trait类似于Java中接口的含义这里继承jpa的基本Repositoryservice层Serviceclass PersonService Autowired()(personRepository: PersonRepository) {/*** 保存** param person 保存对象* return Person*/Transactionaldef save(person: Person): Person {personRepository.save(person)}/*** 根据Id查询** param id 查询参数* return Person*/def selectPersonById(id: Integer): Person {personRepository.findOne(id)}}这里的自动注入的方式和java中不相同是写在类名的后面controller层RestControllerRequestMapping(Array(/v1/person))class PersonController Autowired()(personService: PersonService) {PostMappingdef save(RequestBody person: Person): Person {personService.save(person)}GetMappingdef selectPersonById(RequestParam id: Integer): Person {personService.selectPersonById(id)}}这里的映射路径和java中不同必须传一个数组而java中是传递一个字符串测试启动项目通过postman测试保存image.png查看数据库保存成功。image.png查询image.png注意Java和Scala可以相互调用如Java写的工具类在Scala可直接使用不用在重新写一套Scala的工具类反之亦然。