首先在application.properties文件中配置数据源
#配置数据源
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/monitor?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#配置实体类所在包,用于使用类别名
mybatis.type-aliases-package=com.tzc.yk.MonitorService.pojo
#配置mybatis的xml文件路径
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
#配置日志等级,用于打印sql语句到控制台
logging.level.com.tzc.yk.MonitorService.mapper = debug
在resources目录下新建mybaits\mapper目录,

0.png
并在该目录下新建LoginMapper.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.tzc.yk.MonitorService.mapper.LoginMapper">
<select id="test" resultType="User">
select * from user;
</select>
</mapper>
mapper标签的namespace属性为mybatis接口文件路径,一般来说一个xml文件与一个接口对应,在xml文件中写了一个查询语句,查询所有的用户信息,mybatis将查询到的数据自动包装成User对象。
接下来看看与LoginMapper.xml对应的接口文件
package com.tzc.yk.MonitorService.mapper;
import com.tzc.yk.MonitorService.pojo.User;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public interface LoginMapper {
List<User> test() throws Exception;
}
首先该接口使用了@Service注解,表示该接口可以被Spring自动注入,在接口中声明了一个方法,该方法的方法名与其对应的xml文件中的select标签的id需一致,也就是说xml文件的标签与接口中的方法一一对应。该方法返回值是一个List是因为select语句查询到的结果可能不止一个。还有就是xml中的resultType属性的类型需与List的泛型类型一致。
至此mybatis的配置已经好了,只需调用接口的方法即可访问数据库的数据了;按照常规的套路,先写service层代码,首先定义service接口
package com.tzc.yk.MonitorService.service;
import com.tzc.yk.MonitorService.pojo.User;
import java.util.List;
public interface LoginService {
List<User> test() throws Exception;
}
再实现该接口,再service代码中可以看到有一个LoginMapper的成员对象,该对象使用了@Autowired注解,Spring会为其注入实例,然后通过该对象就可以操作数据库了,本例中调用了test方法,返回所有的用户信息。
package com.tzc.yk.MonitorService.serviceImpl;
import com.tzc.yk.MonitorService.mapper.LoginMapper;
import com.tzc.yk.MonitorService.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class LoginService implements com.tzc.yk.MonitorService.service.LoginService {
@Autowired
LoginMapper loginMapper;
@Override
public List<User> test() throws Exception {
return loginMapper.test();
}
}
最后开始编写控制器方法,在控制器类中同样有 @Autowired注解修饰的成员变量loginService,然后看控制器的test方法,该方法使用 @RequestMapping("/test"),表示访问路径为/test,使用@ResponseBody,表示将数据已JSON格式返回,在方法体中调用了loginService.test()方法,查询所用的用户信息。
package com.tzc.yk.MonitorService.controller;
import com.tzc.yk.MonitorService.pojo.User;
import com.tzc.yk.MonitorService.service.LoginService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@CrossOrigin
public class LoginController {
Logger logger = LoggerFactory.getLogger(LoginController.class);
@Autowired
LoginService loginService;
@RequestMapping("/test")
@ResponseBody
public List<User> test(){
List<User> ls = null;
try {
ls = loginService.test();
} catch (Exception e) {
e.printStackTrace();
}
return ls;
}
}

1.png
网友评论