2018-07-29
注:首先,需要你已经安装了Mysql,并且创建User表
安装 MySQL
1. Windows 安装MySQL
MySQL 下载地址
Maven 项目配置 Mybatis
1. 创建 SpringBoot 工程导入 Maven 模块(略)
2. 在 pom.xml 中添加 Mybatis 和 MySQL 依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.0
mysql
mysql-connector-java
5.1.35
3. 在 resource 下创建一个 application.properties 或者 application.yml 文件,填写配置信息
# application.properties
############################### 数据库配置 ###############################
// 数据库名字
spring.datasource.name=test
// 数据源url, 通过url可以关联数据库
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
// 数据库用户名和密码
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
// 数据库驱动
spring.datasource.driverClassName=com.mysql.jdbc.Driver
############################## mybatis配置 ###############################
#全局映射器启用缓存
mybatis.configuration.cache-enabled=true
#查询时,关闭关联对象及时加载以提高性能
mybatis.configuration.lazy-loading-enabled=false
#按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能
mybatis.configuration.aggressive-lazy-loading=false
#允许返回不同的结果集以达到通用的效果
mybatis.configuration.multiple-result-sets-enabled=true
#对于批量更新操作缓存SQL以提高性能
mybatis.configuration.default-executor-type=REUSE
#数据库执行超时时间
mybatis.configuration.default-statement-timeout=25000
mybatis.type-aliases-package=com.etc.domain
4. 在 src/main/java/project_path/ 下新建一个 domain 包,新建数据库对象模型类
project_path :工程路径,一般是 com/...
package project_path.domain;
/**
* User.java
* @Description 用户模型(对应数据库中一个表)
*/
public class User {
private int id;
private String name;
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 User(String name) {
super();
this.name = name;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
5. 在 Project_path 下 new 一个 mapping 包 ,创建一个UserMapping.java 类
package com.etc.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.etc.domain.User;
/**
* @Description:利用Mybatis的注解实现数据的增删查改
*/
// 加上 Mapper 注解,在项目启动时可以扫描到
@Mapper
// 注册 mapper 接口
public interface UserMapper {
// 将Sql 语句和函数绑定
@Select("select * from user")
List findAll();
@Select("select * from user where id = #{id}") // 用 #{ param } 的形式支持动态 sql
User findById(@Param("id") int id); // @Param中的参数名称要和 sql 语句中的参数名称一致
@Insert("insert into user(name) values(#{name})")
int insert(@Param("name") String name);
@Update("update user set name=#{name} where id=#{id}")
int update(User user);
@Delete("delete from user where id=#{id}")
int delete(int id);
}
6. 在Project_path.service 包下新建 UserService.java 类
package Project_path.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
// 导入用户模型和 Mapper 方法
import Project_path.domain.User;
import Project_path.mapper.UserMapper;
/**
* @Description:Service层:调用UserMapper中的方法,实现增删查改
*/
@Service //需要添加注解,否则无法找到UserService.java类
public class UserService {
@Autowired
private UserMapper userMapper;
public List findAll(){
return userMapper.findAll();
}
public User findById(int id) {
return userMapper.findById(id);
}
public int insert(String name) {
return userMapper.insert(name);
}
public int update(User user) {
return userMapper.update(user);
}
public int delete(int id) {
return userMapper.delete(id);
}
}
7. 在 Project_path.controller 包中新建 UserController.java 控制器类
package Project_path.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import Project_path.domain.User;
import Project_path.service.UserService;
/**
* @Description:Controller层:调用Service层的代码实现数据的增删查改
*/
@RestController // RESTful 控制器类注解
@RequestMapping("/users") //绑定 url 映射方法
public class UserController {
@Autowired
private UserService userService;
/**
* @Description:查找所有用户
* @url 访问地址:http://localhost:8080/users/findAll
* @return 用户对象列表
*/
@RequestMapping("/findAll")
public List findAll() {
System.out.println("查询所有");
List userList = userService.findAll();
for(User user:userList) {
System.out.println("用户:"+user);
}
return userList;
}
/**
* @Description:根据用户ID查找用户
* @url 访问地址:http://localhost:8080/users/findById
* @param id
* @return 用户对象
*/
@RequestMapping("/findById")
public User findById(@RequestParam("id") int id) {
System.out.println("根据用户id查询用户");
User user = userService.findById(id);
System.out.println("用户:"+user);
return user;
}
/**
* @Description:新增用户
* @url 访问地址:http://localhost:8080/users/insert?name=aaa
* @param name
* @return "success" or "false"
*/
@RequestMapping("/insert")
public String insert(@RequestParam("name") String name) {
System.out.println("新增用户");
int result = userService.insert(name);
if(result==1) {
System.out.println("新增成功");
return "success";
}else {
System.out.println("新增失败");
return "error";
}
}
/**
* @Description:修改用户
* @url 访问地址:http://localhost:8080/users/update?id=2&name=zoey
* @param id
* @param name
* @return
*/
@RequestMapping("/update")
public String update(@RequestParam("id") int id,@RequestParam("name") String name) {
System.out.println("修改用户");
User user = new User();
user.setId(id);
user.setName(name);
System.out.println(user);
int result = userService.update(user);
if(result==1) {
System.out.println("修改成功");
return "success";
}else {
System.out.println("修改失败");
return "error";
}
}
/**
* @Description:根据用户ID修改用户
* @url 访问地址:http://localhost:8080/users/delete?id=2
* @param id
* @return
*/
@RequestMapping("/delete")
public String delete(@RequestParam("id") int id) {
System.out.println("删除用户");
int result = userService.delete(id);
if(result==1) {
System.out.println("删除成功");
return "success";
}else {
System.out.println("删除失败");
return "error";
}
}
}
8. 在启动类下添加 MapperScan 和 ComponentScan 注解
package Project_path;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
/**
* @Description:启动类
*/
@SpringBootApplication
@ComponentScan(basePackages="Project_path.*")
@MapperScan("Project_path.*")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
System.out.println("启动完成。。。。。。。。。");
}
}
注意在 MapperScan 和 ComponentScan 注解中的扫描路径要加一个点 '.'
9. 运行:
配置一个本地服务器(tomcat或者其他),选中启动类 Application.java-->Run As-->Java Application,可以在网页上用 url 访问:
localhost:port/users/... port换成相应的端口号,"..."换成相应的操作(fineAll,isnert,delete等)
除了直接在浏览器上访问, 还可以使用 postman 等调试工具。