第一个MyBatis程序

第一个MyBatis程序

流程:获取MyBatis -> 创建测试的数据库 -> 编写代码测试

使用Maven作为包管理工具

导入mabatis包

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

导入数据库驱动

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

导入junit单元测试

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

偷懒导入lombok支持

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

创建数据库
创建数据库
编写Mybatis核心配置文件

在resources文件夹中新建mybatis-config.xml文件(文件名字可以取其他,官方建议取这个我们就先取这个)文件内容从官方中复制即可。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
          <!--driver 需要修改,com.mysql.jdbc.Driver-->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
          <!--url需修改 连接数据库的参数-->
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&amp;useUnicode=true&amp;characterEncode=UTF-8"/>
          <!--username需修改 mysql登入的用户名-->
        <property name="username" value="root"/>
          <!--passsword需要修改 mysql登入的密码-->
        <property name="password" value="password"/>
      </dataSource>
    </environment>
  </environments>
  <!--mapper先注释 后面解释作用-->
    <!--<mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers> -->
</configuration>

我们先把配置文件写成静态的。参照官方文档我们知道下一步应该先从 XML 中构建 SqlSessionFactory

然后从 SqlSessionFactory 中获取 SqlSession,官方示例如下:

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
}

每一个操作都需要用到以上步骤,我们可以将其编写成工具类。

public class MyBatisUtil {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        String resource = "mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

接下来我们实现实体类(注意类成员名要与数据库字段名相同):

import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
    private String pwd;

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
}

这里使用lombok @Data注解 @Data帮我们实现 无参构造+getters+setters + toString + equals

接下来与正常JDBC编写不同的是:正常JDBC需要编写定义方法的接口类,然后再去写实现接口的类

mybatis框架下:我们只需要编写接口类,再去写配置文件。

接口类:

public interface UserMapper {
    /**
     * 获取全部用户
     *
     * @return 含全部用户的列表
     */
    List<User> getUserList();
}

在同一文件夹下编写UserMapper.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="org.mybatis.example.BlogMapper">
    <!--查询语句选择select标签 id=接口类中的方法名 resultType 返回类型我们写实体类名字但是要写完整路径,别名后面解释-->
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

我们的UserMapper.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="com.arctic.dao.UserMapper">
    <select id="getUserList" resultType="com.arctic.dao.UserMappe">
        select *
        from mybatis.user;
    </select>
</mapper>

namespace=实体类完整路径

接下来编写junit Test

public class UserMapperTest {
    @Test
    public void getUserList(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = userMapper.getUserList();
        for (User user : users) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}

运行测试我们出现错误:

在这里插入图片描述
这是因为我们还没有注册UserMapper

我们返回到mybatis-config.xml中注册

    <mappers>
        <mapper resource="com/arctic/dao/UserMapper.xml"/>
    </mappers>

我们还需要在pom.xml中添加resource的路径,因为maven项目默认只在resources文件夹读取resource

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

运行结果:在这里插入图片描述
CRUD我们后面再写!!!!
项目结构:

├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─arctic
│  │  │          ├─dao
│  │  │          │      UserMapper.java
│  │  │          │      UserMapper.xml
│  │  │          │
│  │  │          ├─pojo
│  │  │          │      User.java
│  │  │          │
│  │  │          └─utils
│  │  │                  MyBatisUtil.java
│  │  │
│  │  └─resources
│  │          mybatis-config.xml
│  │
│  └─test
│      └─java
│          └─com
│              └─arctic
│                  └─dao
│                          UserMapperTest.java
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值