發布時間: 2020-07-07 10:12:19
【Java技術培訓】SpringBoot整合MyBatis?
一、 MyBatis簡介
MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數據庫中的記錄。
二、 MyBatis特點
1. 簡單易學 本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易于學習,易于使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。
2. 靈活 mybatis不會對應用程序或者數據庫的現有設計強加任何影響。
sql寫在xml里,便于統一管理和優化。通過sql語句可以滿足操作數據庫的所有需求。
3. 解除sql與程序代碼的耦合:通過提供DAO層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。
4. 提供映射標簽,支持對象與數據庫的orm字段關系映射
5. 提供對象關系映射標簽,支持對象關系組建維護
6. 提供xml標簽,支持編寫動態sql。
三、 在SpringBoot項目中引入MyBatis依賴實現對數據庫的操作(這里采用xml)
1. 引入必須的依賴包<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!--阿里巴巴druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2. 修改application.yml編寫配置文件
server:
port: 9006
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot1701?serverTimezone=UTC
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456aB_
type: com.alibaba.druid.pool.DruidDataSource
# 配置mybatis
mybatis:
mapper-locations: classpath:/mappers/*.xml # 掃描mybatis映射文件
3. 在項目啟動入口上增加mapper接口掃描
@SpringBootApplication
@MapperScan("net.togogo.mybatisxml.mapper")
public class MybatisxmlApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisxmlApplication.class, args);
}
}
4. 編寫與數據庫對應的實體類@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class TbUser {
private Integer id;
private String username;
private String password;
private String role;
}
5. 編寫mapper接口
public interface TbUserMapper {
void saveUser(TbUser user);
List<TbUser> findAll();
}
6. 編寫mapper映射文件
TbUserMapper.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="net.togogo.mybatisxml.mapper.TbUserMapper">
<insert id="saveUser" parameterType="net.togogo.mybatisxml.bean.TbUser">
insert into tb_user(username,password,role)values (#{username},#{password},#{role})
</insert>
<select id="findAll" resultType="net.togogo.mybatisxml.bean.TbUser">
select * from tb_user
</select>
</mapper>
7. 編寫service層
public interface TbUserService {
void saveUser(TbUser user);
List<TbUser> findAll();
}
8. 編寫serviceImpl@Service
@Transactional
public class TbUserServiceImpl implements TbUserService {
@Resource
TbUserMapper userMapper;
@Override
public void saveUser(TbUser user) {
userMapper.saveUser(user);
}
@Override
public List<TbUser> findAll() {
return userMapper.findAll();
}
}
9. 編寫controller
@RestController
@RequestMapping("/user")
public class TbUserController {
@Resource
TbUserService userService;
@PostMapping("/save")
public void saveUser(TbUser user){
userService.saveUser(user);
}
@GetMapping("/users")
public List<TbUser> findAll(){
List<TbUser> users = userService.findAll();
users.forEach(System.out::println);
return users;
}
}
上一篇: 【人工智能】機器學習—超參數調優
下一篇: oracle表空間了解一下