为实现项目的快速高效地开发,采取合适的框架尤为重要。利用SpringBoot+Mybatis框架可以达到快速高效开发的目的。而对于初学者,如何建立一个这样的项目呢?
今天我就从最简单的项目建立开始讲起。
首先希望你的开发者工具跟我一样也是idea,这样也许你能避免许多问题,因为在Eclipse中创建项目有着些许不同。但你如果有足够的经验,这些问题并不能阻碍你,我会在文中同样为Elipse的开发者提供相应的方法。
此处主要注意三处,分别如下图所示,其中第一个是包结构(Group),第二个是项目标识(Artifact),第三个是版本号,一般这三个要根据实际需要进行修改,如果是初学者,可以跟我设置的一样。
首先是Web的依赖:
然后是数据库的依赖:
完成后点击next
单击finish。
第一次建立项目,需要下载许多包,请耐心等待一下,如果已经下载过,或者建立过类似的项目,那么会快许多。完成后则有了一个基本结构的项目,此时的项目还没有实现任何功能,让我们看一下它的目录结构。
为了实现快速开发我们可以手动添加一些依赖,这一点可以在pom.xml文件中添加dependence。下面是完整的pom.xml文件的内容,可提供为参考,如果是使用eclipse的开发者,那么忽略前面的步骤,建立一个maven项目,复制下面pom文件的依赖项和插件即可:
pom.xml:
4.0.0
com.zt
mybatis_springboot
0.0.1-SNAPSHOT
war
mybatis_springboot
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
完成额外pom中添加依赖后,需要对数据库内容进行配置,配置数据库只要在application.properties里面进行配置即可,需要根据自己的实际情况,将文件中的内容进行替换,主要有ip、数据库用户名、数据库密码。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/你的数据库名?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=你的用户名
spring.datasource.password=你的密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.typeAliasesPackage=你的实体类包名 (例子项目的包名是com.shizhao.project.springdemo.model)
mybatis.mapperLocations=classpath:mapper/*.xml
logging.level.com.shizhao.project.springdemo:DEBUG
server.port=你的服务端口号,要保证与其他服务不冲突,如8080
完成后在项目中建立controller、dao、model三个目录如下图所示
建立完成后在model目录下建立User.java,内容如下:
User.java:
public class User {
String username;
String password;
String patternLock;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPatternLock() {
return patternLock;
}
public void setPatternLock(String patterLock) {
this.patternLock = patterLock;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", patterLock='" + patternLock + '\'' +
'}';
}
}
随后在dao目录下建立UserDAO.java。
UserDAO.java:
import com.shizhao.sifo.demo.model.User;
import java.util.List;
public interface UserDAO {
List selectUsers();
}
最后在controller目录下建立UserController.java。
UserController.java:
import com.shizhao.sifo.demo.dao.UserDAO;
import com.shizhao.sifo.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/try")
@EnableAutoConfiguration
public class UserController {
@Autowired
private UserDAO userDAO;
@RequestMapping(value = "/user")
public List getUsers(){
return userDAO.selectUsers();
}
}
当然得在你配置的数据库上对这一操作中的实体类建立对应的数据库表:
create table User
(
id int auto_increment
primary key,
username varchar(20) null,
password varchar(500) null,
patternlock varchar(30) null
);
当然你要插入一些数据,为了方便,我也提供一些数据
insert into User(username, password, patternlock) values ('Bill','123456','123456');
insert into User(username, password, patternlock) values ('Nancy','123456','123456');
insert into User(username, password, patternlock) values ('Bob','123456','123456');
最后为了能够进行查询操作,还必须配置Mapper文件,在resources文件夹下建立mapper目录,在mapper目录中建立一个Mapper.xml文件,该文件主要写对数据访问的操作。如下:
Mapper.xml:
最后在运行文件中,SpringdemoApplication.java需要进行最后的编辑,增加注解MapperScan,切记在MapperScan中你的目录结构必须是Dao文件所在的目录,许多时候忽略这一点就必然导致错误。如下:
SpringdemoApplication.java:
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.shizhao.project.springdemo.dao")
public class SpringdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringdemoApplication.class, args);
}
}
这样就完成了整个项目的构建,并且能够实现最简单的提供接口服务的功能。如何访问呢?
首先运行SpringdemoApplication.java,运行后控制台如下则为成功
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.2.RELEASE)
2018-05-27 20:02:59.474 INFO 1511 --- [ main] c.s.p.springdemo.SpringdemoApplication : Starting SpringdemoApplication on shizhaodeMacBook-Pro.local with PID 1511 (/Users/shizhao/IDEA_Projece/springdemo/target/classes started by shizhao in /Users/shizhao/IDEA_Projece/springdemo)
2018-05-27 20:02:59.476 DEBUG 1511 --- [ main] c.s.p.springdemo.SpringdemoApplication : Running with Spring Boot v2.0.2.RELEASE, Spring v5.0.6.RELEASE
2018-05-27 20:02:59.477 INFO 1511 --- [ main] c.s.p.springdemo.SpringdemoApplication : No active profile set, falling back to default profiles: default
2018-05-27 20:02:59.522 INFO 1511 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4445629: startup date [Sun May 27 20:02:59 CST 2018]; root of context hierarchy
2018-05-27 20:03:00.420 INFO 1511 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8083 (http)
2018-05-27 20:03:00.439 INFO 1511 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-05-27 20:03:00.439 INFO 1511 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.31
2018-05-27 20:03:00.442 INFO 1511 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/shizhao/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2018-05-27 20:03:00.494 INFO 1511 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-05-27 20:03:00.494 INFO 1511 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 975 ms
2018-05-27 20:03:00.577 INFO 1511 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-05-27 20:03:00.579 INFO 1511 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-05-27 20:03:00.580 INFO 1511 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-05-27 20:03:00.580 INFO 1511 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-05-27 20:03:00.580 INFO 1511 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-05-27 20:03:00.938 INFO 1511 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 20:03:01.106 INFO 1511 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4445629: startup date [Sun May 27 20:02:59 CST 2018]; root of context hierarchy
2018-05-27 20:03:01.169 INFO 1511 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/try/user]}" onto public java.util.List com.shizhao.project.springdemo.controller.UserController.getUsers()
2018-05-27 20:03:01.173 INFO 1511 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-05-27 20:03:01.173 INFO 1511 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-05-27 20:03:01.195 INFO 1511 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 20:03:01.195 INFO 1511 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-05-27 20:03:01.416 INFO 1511 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-05-27 20:03:01.418 INFO 1511 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Bean with name 'dataSource' has been autodetected for JMX exposure
2018-05-27 20:03:01.423 INFO 1511 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
2018-05-27 20:03:01.542 INFO 1511 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8083 (http) with context path ''
2018-05-27 20:03:01.546 INFO 1511 --- [ main] c.s.p.springdemo.SpringdemoApplication : Started SpringdemoApplication in 2.361 seconds (JVM running for 2.975)
2018-05-27 20:06:12.909 INFO 1511 --- [ Thread-9] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4445629: startup date [Sun May 27 20:02:59 CST 2018]; root of context hierarchy
2018-05-27 20:06:12.910 INFO 1511 --- [ Thread-9] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
2018-05-27 20:06:12.911 INFO 1511 --- [ Thread-9] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans
打开浏览器,输入localhost:8083/try/user
完成一个最简单的demo访问。到这里一个简单的项目构建就完成了,为了方便大家,这里提供该项目下载地址
https://download.csdn.net/download/dtctcm/10441176 点击打开链接