Springboot整合mybatise的mapper.xml放dao层目录下
Springboot整合mybatise的mapper.xml放dao层目录下
分不使用spring和使用spring,这里一律是考虑springboot整合下,其他情况不具有参考意义
本内容在springboot整合mybatise基础上改动
一、依赖
同上
添加 build内容,让程序编译 dao/mapper下的xml,否则不会编译这里面的xml文件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- ......用于扫描 dao 文件下的mapper 文件................. start -->
<resources>
<!-- 编译 src/main/java 目录下的 mapper 文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<!-- ......用于扫描 dao 文件下的mapper 文件................. end -->
</build>
二、配置文件
server:
port: 8080
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/group?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
注意:mapper-locations的不同
三、代码内容
domain类
public class Doctor {
private String id;
private String sname;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
mapper
@Repository
public interface DoctorMapper {
String getDoctorName(int id);
}
service
@Service
public class DoctorService {
@Autowired
private DoctorMapper doctorMapper;
public String getDoctorName(int id){
return doctorMapper.getDoctorName(id);
}
}
controller
@RestController
@RequestMapping("/testBoot")
public class DoctorController {
@Autowired
private DoctorService doctorService;
@GetMapping("/getName/{id}")
public String getDoctorName(@PathVariable int id){
return doctorService.getDoctorName(id);
}
}
DoctorMapper.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.pingan.mapper.DoctorMapper">
<select id="getDoctorName" parameterType="java.lang.Integer" resultType="java.lang.String">
select sname from doctor where id = #{id}
</select>
</mapper>
主启动类
@MapperScan("com.pingan.mapper")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
目录
区别
1.
这里将mapper.xml放在dao的同目录下,resources里面没有mapper.xml
2.
然后 依赖里面加了 打包的内容,
3.
再把mapper的路径在配置文件里修改下
mybatis: mapper-locations: classpath:mapper/*Mapper.xml
上面的指代的是mapper.xml的位置,
注意与主启动上扫描的目的不同,
4.
主启动上是为了扫描mapper接口
5.
dao层用 @Mapper还是 @Repository都行
