上一章我讲述了如何使用Mybatis操作数据库。这一章我讲述如何利用Sptring框架搭建API接口
在API操作数据库大量调用SqlSessionFactory,因此应将SqlSessionFactory封装成工具类供方法随时调用
在文件结构中的util文件夹下创建一个MybaitisUtil.java文件
文件结构:demo\src\main\java\com\example\demo\util\MybatisUtil.java
package com.example.demo.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory = null;
// 获取sqlSessionFactory
static {
try {
String resource = "Mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (Exception e) {
e.printStackTrace();
}
}
// sqlSession封装
public static SqlSession sqlSession() {
SqlSession sqlSession = null;
if (sqlSessionFactory != null) {
sqlSession = sqlSessionFactory.openSession();
} else {
try {
System.out.println("程序错误!sqlSessionFactory数据无效");
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
return sqlSession;
}
}
为了返回给前端的数据更加的好看、直观,因此我们可以将数据已json的格式返回给前端。
在文件结构中的entity文件夹下创建一个APIResult文件,数据结构以success、data、message构成
类名 | 数据类型 | 说明 |
---|---|---|
success | boolean | 用于输出程序是否执行成功,输出格式为布尔值。成功为true,失败为false |
data | object | 用于数据获得的数据,如果没有数据就返回null |
message | String | 用于存放输出的信息,如果没有信息就返回null |
文件结构:demo\src\main\java\com\example\demo\entity\APIResult.java
package com.example.demo.entity;
import lombok.*;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class APIResult {
private Boolean success;
private Object data;
private String message;
}
现在我们写好了APIResult实体类,我们还要写一个对应的工具类调用,与SqlSessionFactory工具类类似
在文件结构中的util文件夹下创建一个APIResultUtil.java文件
文件结构:demo\src\main\java\com\example\demo\util\APIResultUtil.java
package com.example.demo.util;
import com.example.demo.entity.APIResult;
public class APIResultUtil {
public static APIResult apiResult(Boolean success, String message, Object data) {
APIResult apiResult = new APIResult();
apiResult.setSuccess(success);
apiResult.setMessage(message);
apiResult.setData(data);
return apiResult;
}
}
现在我们封装的SqlSessionFactory和APIResult工具类已经配置完成了,我们现在就可以写APi接口的方法了。
APi接口调用封装的SqlSessionFactory方法,然后通过SqlSessionFactory执行提前编写好的查询SQL语句,获取成功后以Json输出的格式返回给前端。
在文件结构中的controller文件夹下创建一个UserApi.java文件
文件结构:demo\src\main\java\com\example\demo\controller\UserApi.java
package com.example.demo.controller;
import com.example.demo.entity.user;
import com.example.demo.mapper.usermapper;
import com.example.demo.util.APIResultUtil;
import com.example.demo.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api")
public class UserApi {
@RequestMapping("/GetUserList")
public Object GetUserList() {
try {
SqlSession sqlSession = MybatisUtil.sqlSession();
usermapper mapper = sqlSession.getMapper(usermapper.class);
List<user> users = mapper.GetUserList();
sqlSession.close();
if (users != null) {
return APIResultUtil.apiResult(true, "获取成功", users);
} else {
return APIResultUtil.apiResult(true, "无任何用户数据", null);
}
} catch (Exception e) {
System.out.println("程序错误" + e);
return APIResultUtil.apiResult(false, "程序错误", null);
}
}
}
现在APi接口也编写完成了。现在只需要找到DemoApplication.java的启动类就可以将Stringboot跑起来了。
文件结构:demo\src\main\java\com\example\demo\DemoApplication.java
在控制台弹出了这些信息,并且没有结束进程。这表示就成功运行起来了
测试接口我推荐使用ApiPost软件
新建一个接口,在地址栏填入:http://localhost:8080/api/GetUserList
其中的api与GetUsetList都是在UserApi定义的。
下一章讲解APi实现数据库增删改查