(用Maven)整合SpringBoot,SpringMVC,MyBatis
目录
1、用 maven 创建一个 java 项目
2、添加依赖
3、在 pom.xml 里添加资源拷贝插件
4、刷新Maven
5、在Main下创建 resources 文件夹
6、在 resourses 下创建文件 application.yml编辑
7.1、在 application.yml 配置连接数据库的四要素
7.2、配置类型别名
8、在 com.jr.dz18 包下创建 pojo.Emp 类(pojo是包名)
9、创建接口 EmpMapper (是接口,别选错了)
10. 在 mapper 包下创建 EmpMapper.xml 映射文件
11、创建 service 层
12、创建 EmpController
13、在 com.jr.dz18 下创建 SpringBootMain 类
14、运行
15、结束运行
1、用 maven 创建一个 java 项目
项目名 springboot01,java 项目的 Archettype 是 最后叫 quickstart 的,GroupId 写反向域名
1.1 右下角弹的这个选前面的 Exclude floders,Load Maven Project(没截到)
2、添加依赖
在 pom.xml 的 dependencies 标签里添加 SpringBoot,SpringMVC,Mybatis,MySQL,lombok 的依赖(在已有的 dependency 标签下面添加就行,没有就创建一个 dependencies标签)
<!--1.添加SpringBoot 的启动器依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.1.10.RELEASE</version><type>pom</type><scope>import</scope></dependency><!-- 2.添加Spring MVC的启动器依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.10.RELEASE</version></dependency><!-- 3.添加Mybatis 的启动器依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><!-- 4.添加mysql数据库的驱动包依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version> <!--<version>5.1.8</version> --></dependency><!-- 5.添加lombok注解依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope></dependency>
3、在 pom.xml 里添加资源拷贝插件
在 dependencies 的下面,project 的里面创建一个build 标签
<build><!--资源拷贝的插件 --><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.yml</include><include>**/*.xml</include><include>**/*.properties</include></includes></resource></resources>
</build>
4、刷新Maven
加完依赖后右键项目,下滑,在 Maven 刷新一下(有的不需要,我的 idea 需要这一步才能添加成功)
5、在Main下创建 resources 文件夹
5.1 点一下下面的这个,回车就行
5.2 没有就先创建一个 resources
5.2.1 去项目结构
设置资源根目录(?)
↑↑↑ 上面的操作后resources 变色了,点击应用 ↓↓↓
↓↓↓resources 长这样就 ok 了
6、在 resourses 下创建文件 application.yml
6.1 名字一定要是 application.yml,名字对了会有绿色图标出现,这里没有出现图标就刷新一下maven试试(看第四步)
7.1、在 application.yml 配置连接数据库的四要素
冒号:后面一定要有个空格,要看好缩进位置(不然不会识别到,或者识别错误)
url 的 3306 和 jdbc2,uesrname,password 根据自己的数据库写,可能和我的不一样
##配置连接数据库的四要素
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/jdbc2?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: root
7.2、配置类型别名
要顶格开始写,多个包的路径之间用逗号隔开,空格加不加都行
(路径按照自己的包名来写)配置完再刷新一遍 Maven
##配置类型别名; 配置mapper映射文件的位置
mybatis:type-aliases-package: com.jr.pojo.dz18, com.jr.dz18.vomapper-locations: classpath:com/jr/dz18/mapper/*.xml
8、在 com.jr.dz18 包下创建 pojo.Emp 类(pojo是包名)
8.1 编写 Emp 类(用注解)
@AllArgsConstructor
@NoArgsConstructor
@Data
@Component
public class Emp {private Integer empno;private String ename;private String job;private Integer mgr;private Date hiredate;private Double sal;private Double comm;private Integer deptno;
}
9、创建接口 EmpMapper (是接口,别选错了)
9.1 编写 EmpMapper
public interface EmpMapper {@Select("select * from emp where empno=#{empno} and ename=#{ename}")Emp selectEmp(Emp emp);ArrayList<Emp> selectEmps(Emp emp);
}
10. 在 mapper 包下创建 EmpMapper.xml 映射文件
因为在第三步, pom.xml 里写过资源拷贝的插件了,可以在 java 下写 xml 映射文件,创建后会有小鸟图标出现
可以用之前创建的模板(需要改),没有就直接粘下面的代码
(这里的 namespace 也是,按自己的路径写,参数类型和返回值类型可以用别名,因为在 7.2 里面设置了,没设就得用绝对路径 com.jr.pojo.dz18.Emp)
(如果 emp 报红了就刷新一遍 Maven)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jr.dz18.mapper.EmpMapper"><!-- 设置二级缓存的范围(一般会定位到接口) --><select id="selectEmps" parameterType="emp" resultType="emp">select * from emp<where><if test="deptno!=null">and deptno=#{deptno}</if><if test="ename!=null">and ename like '%${ename}%'</if></where></select>
</mapper>
11、创建 service 层
在 dz18 下,创建包和接口 service.EmpService 并编写 (是接口,不是实体类)
public interface EmpService {Emp queryEmp(Emp emp);ArrayList<Emp> queryEmps(Emp emp);
}
11.1 在 service 下创建 impl.EmpServiceImpl 并编写 EmpServiceImpl,标红的地方都选 'import class'
@Service
@Transactional(propagation= Propagation.REQUIRED)
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Overridepublic Emp queryEmp(Emp emp) {return empMapper.selectEmp(emp);}@Overridepublic ArrayList<Emp> queryEmps(Emp emp) {return empMapper.selectEmps(emp);}
}
12、创建 EmpController
12.1 编写 EmpController (用注解和二级路由)
当使用 @ResponseBody 注解时,login() 方法返回的 ArrayList<Emp> 对象会被 Spring 自动转换为 JSON 格式(需要有JSON 解析依赖),并作为响应体返回给前端。(在 pom.xm 中 添加的 SpringBoot 的启动器依赖里有,相当于间接添加了JSON 解析依赖 )
如果没有这个注解,Spring 会默认将返回值视为视图名称,尝试通过视图解析器解析并渲染对应的视图页面
@Controller
@RequestMapping("emp/")
public class EmpController {@Autowiredprivate EmpService empService;@RequestMapping("login")@ResponseBodypublic ArrayList<Emp> login(Emp emp){ //返回值会自动转成字符串类型Emp returnEmp = empService.queryEmp(emp);if(returnEmp == null){System.out.println("登录失败");return null;}else{System.out.println("登录成功");ArrayList<Emp> list = empService.queryEmps(new Emp());return list;}}
}
13、在 com.jr.dz18 下创建 SpringBootMain 类
或者给 App 改名,叫 SpringBootMain
添加/重写 main 方法,添加注解(注解里面的路径也是,按照自己的包结构写)
@SpringBootApplication
@MapperScan("com.jr.dz18.mapper")
public class SpringBootMain {public static void main(String[] args) {SpringApplication.run(SpringBootMain.class,args);}
}
注意:有 main 方法的文件一定要直接写在 Controller 的上级文件底下,不要再套文件夹
14、运行
先在右边去 Maven 的生命周期 clean 并 install 然后再运行
(2, 3, 4 要双击)点到 5 后点击 Run 'SpringBootMain,main()'
14.1 右下角弹东西就都点 Enable annotation processing
↑↑ 运行成这样之后,打开浏览器,在网址里直接输入url + 拼接两个参数 (参数值用emp表里有的数据) 127.0.0.1:8080/emp/login?empno=1235&ename=admin 然后点回车键 ↓↓
↑↑↑ 输出的是Emp表里的数据 ↓↓↓
15、结束运行
最后点击上方的红色按钮结束运行