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. 引入必须的依赖包
org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter com.alibaba druid 1.1.22 mysql mysql-connector-java runtime org.projectlombok lombok true |
2. 修改application.yml编写配置文件
server: port: 9006spring: 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# 配置mybatismybatis: 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@ToStringpublic class TbUser { private Integer id; private String username; private String password; private String role;} |
5. 编写mapper接口
public interface TbUserMapper { void saveUser(TbUser user); List findAll();} |
6. 编写mapper映射文件 TbUserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>/span> "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> insert into tb_user(username,password,role)values (#{username},#{password},#{role}) select * from tb_user |
7. 编写service层
public interface TbUserService { void saveUser(TbUser user); List findAll();} |
8. 编写serviceImpl
@Service@Transactionalpublic class TbUserServiceImpl implements TbUserService { @Resource TbUserMapper userMapper; @Override public void saveUser(TbUser user) { userMapper.saveUser(user); } @Override public List 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 findAll(){ List users = userService.findAll(); users.forEach(System.out::println); return users; }} |
Q Q咨询:450959328
微信咨询:togogozhong