Mybatis 快速上手(最适合入门的路线)

849 阅读2分钟

1. Mybatis 官网与文档

image.png

直接搜索Mybatis你可能会直接得到Mybatis的官网文档,但是这个文档对一些开发集成上使用帮助不大,比如没有讲解Spring如何集成Mybatis等,更多的文档我们可以直接访问mybatis.org,它将会自动跳转到Mybatis的Blog。这里有很多关于Mybatis的资料,如果你有一些找不到的配置,可以来这里看看

image.png

2. 直接切入SpringBoot 集成Mybatis

  • 项目结构
image.png
  • 引入依赖
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->  
<dependency>  
    <groupId>org.mybatis.spring.boot</groupId>  
    <artifactId>mybatis-spring-boot-starter</artifactId>  
    <version>2.3.0</version>  
</dependency>
  • 配置数据库 application.yml
spring:  
    datasource:  
        driver-class-name: com.mysql.cj.jdbc.Driver  
        url: jdbc:mysql://domain:3306/db?useUnicode=true&characterEncoding=utf-8&useSSL=false
        username: root  
        password: root
  • 配置扫描Mapper
@SpringBootApplication  
@MapperScan(basePackages = "org.example.mapper")// Mapper接口所在位置 
public class App {  
    public static void main(String[] args) {  
        SpringApplication.run(App.class, args);  
    }  
}
  • 配置扫描XML

application.yml 配置SQL映射文件所在位置、开启类别名、日志输出

mybatis:  
    mapper-locations: classpath:org/example/mapper/**/*.xml  
#这里如果使用 classpath*:org/example/**/*.xml, 则**可扫描多级目录否则只扫描mapper子级目录,孙子目录不会扫描
# type-aliases-package: org.example.entity
    configuration:  
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

pom.xml因Java在打包时,对src目录下只识别java文件,所以我们需要配置build选项,来指定打包我们的xml

<build>  
    <resources>  
        <resource>  
            <directory>src/main/java</directory>  
            <includes>  
                <include>**/*.xml</include>  
            </includes>  
        </resource>  
    </resources>  
</build>

3. Mapper映射文件XML的DTD去哪里找?

在这里:mybatis – MyBatis 3 | 入门,直接去官网复制就行了

image.png

4. IDEA MybatisX 插件

File > Setting > Plugins > 搜索MybatisX image.png

5. 使用注解

如果你使用了@MapperScan, IDEA可能无法识别提示你注入参数,像这样

image.png

即便你使用了@MapperScan, 你也可以在对应的Mapper上加上@Mapepr注解,以便IDEA识别

image.png

6. For a test

User.java

@Data  
@AllArgsConstructor  
@NoArgsConstructor  
@Alias("User")  
public class User {  
    private Long id;  
    private String name;  
    private String gender;  
    private Integer age;  

    public User(String name, String gender, Integer age) {  
        this.name = name;  
        this.gender = gender;  
        this.age = age;  
    }  
}

UserMapper.java

@Mapper  
public interface UserMapper {  
    Long saveUser(User user);  
}

UserMapper.xml

<!DOCTYPE mapper  
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  
<mapper namespace="org.example.mapper.UserMapper">  
    <insert id="saveUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">  
        insert into users (name, gender,age) values (#{name},#{gender},#{age})  
    </insert>  
</mapper>

Test.java

@SpringBootTest(classes = App.class)  
@RunWith(SpringRunner.class)  
public class AppTest {  
    @Autowired  
    public UserMapper userMapper;  

    @Test  
    public void testSaveUser() {  
        for (int i = 0; i < 20; i++) {  
            User user = new User(name(), gender(), age());  
            userMapper.saveUser(user);  
            System.out.println(user);  
        }  
    }  
}