SpringBoot系列之三_一个完整的MVC案例

  SpringBoot系列之三_一个完整的MVC案例


  这一节让我们来做一个完整的案例。

  我们将使用MyBatis作为ORM框架,并以非常简单的方式来使用MyBatis,完成一个完整的MVC案例。

  此案例承接上一节,请先搭建好上一节案例。


  一、数据库准备

  我们使用MySQL作为数据存储,使用开发工具创建一个数据库demo,并在demo数据库中创建一张表user,创建语句如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL COMMENT '主键',
  `name` varchar(64) NOT NULL COMMENT '姓名',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `address` varchar(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  在这个表中写入一些测试数据,例如:



  二、编写项目代码

  1. 修改pom文件,添加两个依赖项:

  (1) mysql驱动包

  (2) mybatis支持(MyBatis公司为spring boot编写了一个mybatis-spring-boot-starter项目)


  pom文件内容如下:

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.0</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

  2. 修改application.properties,内容如下:

spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

mybatis.typeAliasesPackage=com.hanhf.demo.domain

  此处配置了数据库URL、用户名、密码、驱动类,另外,还配置了实体类所在的包。


  3. 具体代码:

  先来看一下项目的包结构:


  这里,创建了三个包:

  web:存放控制器

  service:存放业务逻辑层对象

  domain:存放实体类和DAO类


  (1) User类(很普通的POJO类):

public class User {
	private int id;
	private String name;
	private Date birthday;
	private String address;

	// 构造方法

	public User() {
		super();
	}

	public User(int id, String name, Date birthday, String address) {
		super();
		this.id = id;
		this.name = name;
		this.birthday = birthday;
		this.address = address;
	}

	// getter & setter

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

  (2) UserMapper接口:

  MyBatis需要你为DAO提供一个接口,它称之为Mapper。然后具体的SQL语句可以注解在接口上,也可以单独保存在一个xml文件中,我这里使用的是前者,即将SQL语句注解在接口上。

  代码如下:

@Mapper
public interface UserMapper {
	@Select("select * from user")
	List<User> selectAll();
}

  增、删、改、查各有一个注解。接口前的@Mapper注解表示它是一个Mapper。


  (3) UserService类

  代码如下:

@Service
public class UserService {
	@Autowired
	private UserMapper userMapperp;

	public List<User> listAll() {
		return userMapperp.selectAll();
	}
}
  业务逻辑层的类需要加上@Service注解。


  (4) UserController类

  代码如下:

@RequestMapping("user")
@RestController
public class UserController {
	@Autowired
	private UserService userService;

	@GetMapping("/list/all")
	public List<User> listAll() {
		return userService.listAll();
	}
}
  控制器类前可以加@Controller注解,也可以加@RestController注解,如果是前者,则控制器方法返回的是一个页面的代称,如果是后者,则控制器方法返回的是JSON数据。

  @RequestMapping用于指定请求的URL,它还有几个子注解:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping,分别表示请求的GET、POST、PUT、DELETE等操作,这是为RESTFUL应用设置的新注解。

  如果类上有@RequestMapper("user"),方法上又有@GetMapping("/list/all"),则要访问listAll()方法,请求的URL应为:http://localhost:8080/user/list/all。


  (5) 主应用程序

  最后,在主应用程序的类前加一个注解:

  @MapperScan("com.hanhf.demo.domain")

  这个注解表示扫描MyBatis的Mapper接口所在的包,找出所有加了@Mapper注解的接口。

  代码如下:

@SpringBootApplication
@MapperScan("com.hanhf.demo.domain")
public class DemoApplication {
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}


  至此,项目完成。


  启动程序,并输入网址:http://localhost:8080/user/list/all,出现网页:


  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值