MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。mybatis – MyBatis 3 | 简介

1、依赖准备
- <dependencies>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.5.5version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>8.0.11version>
- dependency>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- <scope>testscope>
- dependency>
- <dependency>
- <groupId>log4jgroupId>
- <artifactId>log4jartifactId>
- <version>1.2.12version>
- dependency>
- dependencies>
2、数据库准备
- DROP TABLE IF EXISTS `tb_users`;
- CREATE TABLE `tb_users` (
- `id` int(20) NOT NULL COMMENT '编号主键',
- `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',
- `birthday` date NOT NULL COMMENT '出生日期',
- `sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别',
- `address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '地址',
- PRIMARY KEY (`id`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-
3、编写Entity层
- public class User implements Serializable {
-
- private Integer id;
- private String username;
- private Date birthday;
- private String sex;
- private String address;
-
- /*
- 提供set、get方法
- */
-
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", username='" + username + '\'' +
- ", birthday=" + birthday +
- ", sex='" + sex + '\'' +
- ", address='" + address + '\'' +
- '}';
- }
- }
4、编写Dao层
- public interface UserDao {
- List
findAll(); - }
5、Dao层的Mapper映射文件
写法一、使用配置文件编写sql
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.qiu.dao.UserDao">
-
- <select id="findAll" resultType="com.qiu.model.User">
- select *
- from tb_users;
- select>
- mapper>
6、DataSource 配置文件(dao层对应mapper.xml文件)
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environments default="mysql">
- <environment id="mysql">
-
- <transactionManager type="JDBC">transactionManager>
-
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/test2?
- serverTimezone=UTC&useUnicode=true&characterEncoding=utf8"/>
- <property name="username" value="${username}"/>
- <property name="password" value="${password}"/>
- dataSource>
- environment>
- environments>
-
- <mappers>
- <mapper resource="mapper/UserMapper.xml"/>
- mappers>
- configuration>
注意mapper标签用法

- <mappers>
- <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
- mappers>
- <mappers>
- <mapper url="file:///var/mappers/AuthorMapper.xml"/>
- mappers>
- <mappers>
- <mapper class="org.mybatis.builder.AuthorMapper"/>
- mappers>
7、编写测试类
- public class MybatisTest {
- public static void main(String[] args) throws IOException {
- //1、读取配置文件
- InputStream in = Resources.getResourceAsStream("config/SqlMapConfig.xml");
- //2.创建 SqlSessionFactory 的构建者对象
- SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
- //3.使用构建者创建工厂对象 SqlSessionFactory
- SqlSessionFactory sessionFactory = builder.build(in);
- //4.使用 SqlSessionFactory 生产 SqlSession 对象
- SqlSession sqlSession = sessionFactory.openSession();
- //5.使用 SqlSession 创建 dao 接口的代理对象
- UserDao userMapper = sqlSession.getMapper(UserDao.class);
- //6.使用代理对象执行查询所有方法 List
- List
users = userMapper.findAll(); - for (User user : users) {
- System.out.println(user);
- }
- //7.释放资源
- sqlSession.close();
- in.close();
- }
- }
【显示结果】

写法二、使用注解编写sql
- public interface UserDao {
- @Select("select * from tb_users")
- List
findAll(); - }
更改mapperbb标签,其他不变
