毕业一年了,想自己做一些小项目提升一下自己。于是瞄上了最近很火的springboot技术,之前在学校使用过springMVC框架+mybatis + mysql写过一些项目(拿了别人的代码框架,依葫芦画瓢写一写自己的业务逻辑)。之前并不会使用git去保管代码,现在想把之前的框架用一用都不行了,代码早已不知道在哪里。于是想自己试着整合一下(虽然可以直接到网上拿别人的框架用,但是不如自己试着搭建来的深刻,学习应当循序渐进),虽然看似简简单单的小事情,但真的做起来会有一大堆莫名其妙的问题出现,磕磕碰碰,花的时间可不少(特别是初学者而言?我也是哈哈哈哈)。
使用springboot(免配置真的爽歪歪,新手用ssh框架感觉跟吔了s一样难受,眼花缭乱的配置),然后使用比较流行的mybatis持久层框架来对数据库进行操作,方便快捷。对比hibernate框架,mybatis有自己的优缺点,如何选择视具体情而定,比较如下:
(1)sql方面:mybaits通过mapper.xml维护映射结果,程序员手动编写sql相比hibernate自动生成hql(hibernate sql)更加灵活,sql调优更加容易(hibernate因为更好的封装性,开发效率提高的同时,sql语句调优要更费力,当然可以手动修改sql来优化,但是同时也会影响开发效率);hibernate的hql数据库移植性更好,体现在强壮性。hibernate在级联删除的时候效率低;数据量大, 表多的时候,基于关系操作会变得复杂。
(2)缓存方面:mybatis和hibernate都可以使用第三方缓存,而hibernate相比maybatis有更好的二级缓存机制。
mybatis是使用xxxxMapper.xml来建立映射关系的,可以使用代码生成工具mybatis-generator来生成基本代码和相应的xml(谁用谁知道)。
使用开发神器IDEA来进行开发,社区版免费,而专业版教育免费(学生、老师免费)。
springboot入门教程
先贴上demo的代码地址:https://github.com/SakuraLu/springbootDemo.git
话不多说,开始本次创建项目之旅。
新建一个项目:
选择Spring Initializr,并且点击下一步
输入你的groupID和Atifact,并且选择Maven Project
勾选这两个,然后点击完成即可。
创建好层次分明目录结构:控制器(controller)、service接口、service实现、实体类、dao等包。
编辑maven工程的pom.xml文件,并且下载springboot和mybatis等依赖。
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.0.RELEASE
com.example
test
0.0.1-SNAPSHOT
test
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-websocket
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.7
true
true
等待依赖下载完成即可。
项目在创建完成的时候自动生成了一个application.properties的配置文件,但是推荐您使用yml文件,并且可以创建多个配置文件(例如:开发环境使用的application-dev.yml,产品环境使用的配置文件 application-prod.yml)
application.yml文件内容如下:
spring:
profiles:
# 指定激活的环境,若是dev则激活的是application-dev.yml,若是prod,激活的就是application-prod.yml文件
active: dev
application-dev.yml如下:
server:
port: 8080
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
mybatis:
#指定mybatis的mapper配置文件的目录
mapper-locations: classpath:mapping/*Mapper.xml
type-aliases-package: com.mitel.entity
#showSql
logging:
level:
com:
example:
mapper : debug
1. 首先在maven的pom.xml文件里添加如下配置,然后重新下载依赖(第三步中的pom.xml文件中已经添加了该依赖,这里无需添加,读者知道便好):
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.7
true
true
2. 创建并编辑mybatis-generator生成代码所需要的配置文件generatorConfig.xml(这是默认的文件名称,读者最好不要更改),这里,我们把JDBC的配置信息单独开来形成另一个配置文件generatorConfig.properties,两个文件的内容如下:
generatorConfig.properties:
jdbc.driverLocation = /Users/muxue/.m2/repository/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
jdbc.userId=root
jdbc.password=123456
generatorConfig.yml:
3. 开始生成代码
在idea的右边有一个maven的按钮,点击之后就能找到刚刚添加的mybatis-generator,双击就可以生成相应代码了(生成的代码的具体在配置文件里都可以配置,这里有一个坑就是:若生成两次代码,xxxxMapper.xml就会又插入一次相关代码,解决办法就是:(1)删除已有的文件在生成(2)生成后,删除掉重复的代码);还有一些坑比如生成withXXXBLOBs文件等,这个可以网上搜一下解决,应该不难。
红框内为使用mybatis-generator生成的代码
为生成的XXXMapper类添加注解
编写service和controller,运行项目
service:
controller:
运行测试:
运行成功!!!
在mybatis-generator生成代码的时候,entity多了一个UserExample类,使用这个类,可以使用Criteria类进行数据库增删查改条件的拼接,这样更方便进行数据库操作,例如:
进一步了解需要自己网上查找资料啦!!!!如有错误望指出。