SpringBoot实现(一):eclipse 下 maven 环境配置
SpringBoot实现(二):MyBatis 配置和 MVC 布置
SpringBoot实现(三):关联 Thymeleaf
SpringBoot实现(四):过滤器 Filter
SpringBoot实现(五):将项目部署到云服务器(完)
点击 Java Resources
,依次在 src/main/java
中创建以下几个包:)
1,com.example
作为项目根目录,存在一个项目启动类
2,com.example.controller
Servlet 管理类,用于路径映射和业务实现等一系列操作
3,com.example.entity
Java Bean 实体类
4,com.example.mapper
dao 接口
5,com.example.service
dao 接口实现类
再在src/main/resources
目录下创建以下几个文件和包
1,包 mapping
dao 文件配置
2,包 templates
后面说到:)
3,application.yml
项目配置文件
4,application-test.yml
项目配置文件-分流
在application.yml
文件中加入以下数据
spring:
profiles:
active: test
不允许存在 Tab 键,不然会报错
什么意思呢?在项目启动时会读取application.yml
文件中的数据,而加入以上数据后它会转向名为application-test.yml
文件,去读取其配置信息,只要你的分流文件符合application-
+名字
就可以被转向,这就允许你可以有多个环境下的配置文件,可以方便的切换不同环境下的配置:)
之后再 application-test.yml
文件中加入以下数据
server:
port: 8080
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/test
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.example.entity
乍一看一脸懵逼,细看的话就觉得很熟悉了,不就是数据库配置信息和服务器端口吗,还有一个MyBatis
的配置信息,主要内容为 Java Bean 实体类
和dao配置文件
的路径:)
好了,接下来要实现 MaBatis 了:)
首先,在实体包com.example.entity
中创建一个 User
,类,其内容为
package com.example.entity;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
注意:bean 属性必须与数据库的表的列名一致,不然会关联不到数据
小技巧
打完三个属性后,按 Shift + Alt + S, 之后按 R,再按 Tab,再按 Enter,再按 Shitf + Tab,再按 Enter,完成 getter + setter 快速写入
按 Shift + Alt + S,之后按 S,再按 Enter,完成 toString() 的快速写入,熟练后整个过程就几秒:)
之后在 com.example.mapper
包中创建接口类 UserMapper
,内容如下
package com.example.mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
import com.example.entity.User;
@Repository
public interface UserMapper {
void save(User user);
User findByUser(User user);
void deleteById(int id);
List<User> findAll();
}
四个方法,分别用来存储用户,寻找所有用户,寻找用户,根据 id 删除指定,一个注解,用于告诉 SpringBoot 它是干嘛的:)
然后在 com.example.service
包中创建一个接口实现类 UserService
,内容如下
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.entity.User;
import com.example.mapper.UserMapper;
@Service
public class UserService implements UserMapper {
@Autowired
private UserMapper mapper;
public void save(User user) {
// TODO Auto-generated method stub
mapper.save(user);
}
public User findByUser(User user) {
// TODO Auto-generated method stub
return mapper.findByUser(user);
}
public void deleteById(int id) {
// TODO Auto-generated method stub
mapper.deleteById(id);
}
public List<User> findAll() {
// TODO Auto-generated method stub
return mapper.findAll();
}
}
主要实现了接口的方法,@Service
注解与@Repository
一样,都是为了告诉 SpringBoot 干嘛的,而 @Autowired
的作用为依赖注入,可以使 SpringBoot 帮你将接口实例化,不用你去具体实现:)
在 src/main/resources
下的 mapping
包中创建一个xml 文件 UserMapper.xml
,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="UserMap" type="com.example.entity.User">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="password" jdbcType="VARCHAR" property="password" />
</resultMap>
<select id="findAll" resultType="com.example.entity.User">
select * from user
</select>
<select id="findByUser" resultType="com.example.entity.User"
parameterType="com.example.entity.User">
select * from user where username=#{username} and password=#{password}
</select>
<insert id="save" parameterType="com.example.entity.User">
insert into user (username, password) values (#{username}, #{password})
</insert>
<delete id="deleteById">
delete from user where id=#{id}
</delete>
</mapper>
看起来其实挺好懂的,都是一些 sql 语句的配置,其 select
返回类型设置要注意,若是一个类就写类,是一个集合的话就写集合元素的类型,如 List<User>
写的就是User
的类型:)
然后,在com/example/controller
文件夹中创建一个管理类 UserController
,内容如下
package com.example.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.entity.User;
import com.example.service.UserService;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("test.do")
public void doTest() {
for (User u : userService.findAll()) {
System.out.println(u.toString());
}
}
}
若你用 SpringMVC 用的很熟的话,看着个就非常容易了,首先 @RestController
为注解,解释用的,@RequestMapping("user")
和@RequestMapping("test..do")
为路径设置,用于路径映射,当项目跑起来时,你只要访问网址http://localhost:8080/user/test.do
,就会执行其中的代码:)
最后,在 com.example
包下创建一个项目启动类 DemoApplication
,其内容如下
package com.example;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(value="com.example.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication
一个注解,MapperScan(value="com.example.mapper")
用于声明仓库:)
启动:若成功的话,则会出现以下日志
项目启动后,访问网址http://localhost:8080/user/test.do
,会打印以下日志
这是我预先存入数据库的一些数据,好了,如果做到了这步,就到表你成功了,通过管理类你就可以很方便的处理业务逻辑和路径映射,省去了web层中的 Servlet 类的创建与配置:)
问题询问:hellolxb@yeah.net
SpringBoot实现(一):eclipse 下 maven 环境配置
SpringBoot实现(二):MyBatis 配置和 MVC 布置
SpringBoot实现(三):关联 Thymeleaf
SpringBoot实现(四):过滤器 Filter
SpringBoot实现(五):将项目部署到云服务器(完)