springboot整合mybatis
環境:jdk1.8,idea,MySQL 8.0.16
1. 新建一個springboot項目
2. 添加pom依賴
添加相關依賴,就可以連接數據庫了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
3. 在application.yml中配置數據源和mybatis
spring:
#數據源
datasource:
username: root
password: 123
url: jdbc:mysql://localhost:3306/ccc?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
# 就不用單獨寫一個mybatis-config.xml文件了,也可以單獨寫一個
mybatis:
# mapper-locations: classpath:mapping/*.xml,mapper接口的實現都在這
# 實體類的別名
type-aliases-package: com.example.demo.entity
# spring boot集成mybatis的方式打印sql
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
實體類和mapper接口
用了lombok
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Teacher {
private int id;
private String name;
private int collection;
}
mapper接口
@Repository
public interface TeacherMapper {
@Select("SELECT * FROM teachers")
List<Teacher> selectAll();
@Select("select * from teachers where name=#{name}")
Teacher selectByName(String name);
@Select("select * from teachers where id=#{id}")
Teacher selectById(int id);
}
application啓動類中添加@MapperScan註解,掃描mapper接口,或者在每個mapper接口上添加@Mapper
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4. 項目結構
5. service層調用接口
可以直接用@Autowired自動注入teacherMapper,也可用構造函數
@Service
public class TeacherServiceImpl implements TeacherService {
final TeacherMapper teacherMapper;
public TeacherServiceImpl(TeacherMapper teacherMapper) {
this.teacherMapper = teacherMapper;
}
@Override
public List<Teacher> selectAll() {
List<Teacher> list = teacherMapper.selectAll();
return list;
}
@Override
public Teacher selectByName(String name) {
return teacherMapper.selectByName(name);
}
@Override
public Teacher selectById(int id) {
return teacherMapper.selectById(id);
}
}