【MyBatis03】Mybatis入门程序

1 准备

1.1 建表

CREATE TABLE t_user(
	id INT PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(50),
	PASSWORD VARCHAR(50),
	gender TINYINT,
	regist_time DATETIME
)DEFAULT CHARSET =utf8;

1.2 插入测试数据

1.3 创建Maven项目

2 配置

2.1 配置pom.xml

在pom.xml中引入相关依赖

<!-- 导入MyBatis依赖-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis.version}</version>
</dependency>

<!-- MySQL驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
</dependency>

2.2 配置jdbc配置文件

创建并配置jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisdb?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234

2.3 配置Mybatis配置文件

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

  • 创建mybatis-config.xml

  • 粘贴XML 头部的声明,用来验证 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>
    <!-- 导入外部参数-->
    <properties resource="jdbc.properties"/>
    <!-- 配置实体类别名-->
    <!-- 核心配置信息-->
    <environments default="mybatis_config">
        <!-- 数据库相关配置-->
        <environment id="mybatis_config">
            <!-- 事务类型-->
            <transactionManager type="jdbc"/>
            <!-- 数据库连接参数-->
            <dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

XML 配置文件中包含了对 MyBatis 系统的核心设置:

  • DataSource:获取数据库连接实例的数据源

  • TransactionManager:决定事务作用域和控制方式的事务管理器

3 编码

3.1 创建实体类

创建进行CURD操作所需要的实体类

/**
 * @author qiang
 * @create 2022-05-25 22:15
 * @Description:
 */
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer gender;
    private Date registerTime;

    public User() {
    }

    public User(Integer id, String username, String password, Integer gender, Date registerTime) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.gender = gender;
        this.registerTime = registerTime;
    }

//Getters and Setters

    @Override
    public String toString() {......}
}

3.2 定义DAO接口

根据需求定义DAO接口

/**
 * @author qiang
 * @create 2022-05-25 22:18
 * @Description:
 */
public interface UserDao {
    User queryUserById(Integer id);
}

3.3 编写Mapper

resource目录下创建与3.3.2中的DAO对应的Mapper.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.qianglj.test1.dao.UserDao">
    <select id="queryUserById" resultType="com.qianglj.test1.dao.UserDao">
        select id,username,password,gender,regist_time as registerTime
        from t_user
        where id=#{id}
    </select>
</mapper>
  • <mapper namespace="com.qianglj.test1.dao.UserDao">
    • mapper 映射文件标签,在这个标签中可以定义无数个映射语句;
    • namespace="com.qianglj.test1.dao.UserDao"
      • 命名空间为com.qianglj.test1.dao.UserDao后续可以使全限定名 com.qianglj.test1.dao.UserDao来调用映射语句;
      • 在新版本的MyBatis中,必须指定命名空间(Namespace)
      • 命名空间在实现了接口绑定的同时可以利用更长的全限定名来将不同的语句隔离开来;
  • <select id="queryUserById" resultType="com.qianglj.test1.dao.UserDao">
    • select:select标签用于映射SELECT语句;
    • id="queryUserById":通过解析id:queryUserById,将SELECT语句与DAO中的queryUserById方法进行映射;
  • MyBatis 对所有具有名称的配置元素(包括语句,结果映射,缓存等)使用了如下的命名解析规则

    • 全限定名(比如 com.qianglj.test1.dao.UserDao)将被直接用于查找及使用;

    • 名称(比如 selectAllThings

      • 全局唯一,也可以作为一个单独的引用来使用;

      •  如果不唯一,有两个或两个以上的相同名称(比如 com.foo.selectAllThingscom.bar.selectAllThings),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用全限定名

另外如果想在其他目录存放Mapper.xml文件,比如如果需要将Mapper.xml与相应的DAO文件存放在同一目录下,则需要修改pom.xml文件,改变Maven项目的编译规则:

<build>
    <!-- 更改maven编译规则 -->
    <resources>
        <resource>
            <!-- 资源目录 -->
            <directory>src/main/java</directory>
            <includes>
                <include>*.xml</include><!-- 默认(新添加自定义则失效) -->
                <include>**/*.xml</include><!-- 新添加 */代表1级目录 **/代表多级目录 -->
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

3.4 注册Mapper及配置实体类别名

将3.3中创建的Mapper.xml注册到mybatis-config.xml文件中,并为3.1中创建的实体类配置别名

<?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>
    <!-- 导入外部参数-->
    <properties resource="jdbc.properties"/>
    <!-- 配置实体类别名-->
    <typeAliases>
<!--        <typeAlias type="com.qianglj.test1.pojo.User" alias="hello_user"/>-->
        <!-- 定义package,每个实体类都会自动注册一个别名=类名-->
        <package name="com.qianglj.test1.pojo"/>
    </typeAliases>
    <!-- 核心配置信息-->
    <environments default="mybatis_config">
        <!-- 数据库相关配置-->
        <environment id="mybatis_config">
            <!-- 事务类型-->
            <transactionManager type="jdbc"/>
            <!-- 数据库连接参数-->
            <dataSource type="org.apache.ibatis.datasource.pooled.PooledDataSourceFactory">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--注册Mapper文件-->
    <mappers>
        <mapper resource="UserDAOMapper.xml"/>
    </mappers>
</configuration>

4 测试

MyBatis API的测试方式:

public class TestMyBatis {
    public static void main(String[] args) throws IOException {
        //Mybatis API
        //1. 加载配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        //2. 构建SqlSessionFactory    --核心API
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //3. 通过SqlSessionFactory创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.通过SqlSession获得Dao实现类的对象
        UserDao mapper = sqlSession.getMapper(UserDao.class);//获取UserDao对应的实现类的对象

        User user = mapper.queryUserById(1);
        System.out.println(user);
    }
}

测试结果:

User{id=1, username='Tom', password='123', gender=1, registerTime=Wed May 25 22:13:35 CST 2022}

 

版权声明:
作者:jackqiang
链接:http://www.jackqiang.com/framework/mybatis/1917/mybatis_demo/
来源:JackQiang's
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录