MyBatis-搭建MyBatis

二、搭建MyBatis

1、开发环境

IDE:idea 2019.2

构建工具:maven 3.6.3

MySQL版本:MySQL 8.0

MyBatis版本:MyBatis 3.5.7

2、创建maven工程

1)先创建一个空工程

2)在项目结构中配置SDK

3)在设置中配置本地maven的路径和maven仓库的镜像网站路径,以提高下载效率

4)新建模块"MyBatis-搭建MyBatis"

5)在Navicat中新建一张表t_user

 

6)

a>打包方式:jar

pom.xml文件中设置:

<groupId>com.atguigu.mybatis</groupId>
<artifactId>MyBatis-搭建MyBatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>   <!--设置打包方式-->

b>引入依赖

pom.xml文件中设置:

<!--引入依赖-->
<dependencies>
    <!--MyBatis核心-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
​
    <!--junit测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
​
    <!--MySQL驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
</dependencies>

3、创建MyBatis的核心配置文件

习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合Spring之后,这个配置文件可以省略,所以在操作时可以直接复制、粘贴。

核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信总

核心配置文件存放的位置是src/main/resources目录下

mybatis-config.xml文件设置:

<?xml version="1.0" encoding="UTF-8" ?>   <!--用于声明该xml文件的版本号及编码方式-->
<!--mybatis配置文件中的约束-->
<!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">
            <!--设置事务管理器的类型为JDBC-->
            <transactionManager type="JDBC" />
            <!--设置数据源,作用是设置连接数据库的信息-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <!--引入配置好的mapper映射文件-->
        <mapper resource="mappers/UserMapper.xml" />
    </mappers>
</configuration>

4、创建mapper接口

MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,不需要提供实现类。

1)在java目录下创建com/atguigu/mybatis/pojo包,用于存放实体类。然后在pojo包下新建User类:

public class User {
​
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String sex;
    private String email;
​
    //设置有参构造(快捷键:Alt+Insert)
    public User(Integer id, String username, String password, Integer age, String sex, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.sex = sex;
        this.email = email;
    }
​
    //设置无参构造(快捷键:Alt+Insert)
    public User(Integer id) {
        this.id = id;
    }
​
    //设置Setter和Getter方法(快捷键:Alt+Insert)
    public Integer getId() {
        return id;
    }
​
    public void setId(Integer id) {
        this.id = id;
    }
​
    public String getUsername() {
        return username;
    }
​
    public void setUsername(String username) {
        this.username = username;
    }
​
    public String getPassword() {
        return password;
    }
​
    public void setPassword(String password) {
        this.password = password;
    }
​
    public Integer getAge() {
        return age;
    }
​
    public void setAge(Integer age) {
        this.age = age;
    }
​
    public String getSex() {
        return sex;
    }
​
    public void setSex(String sex) {
        this.sex = sex;
    }
​
    public String getEmail() {
        return email;
    }
​
    public void setEmail(String email) {
        this.email = email;
    }
​
    //设置toString(快捷键:Alt+Insert)
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

2)在mybatis包下创建mapper包,代替dao。然后在mapper包下新建UserMapper接口:

package com.atguigu.mybatis.mapper;
​
public interface UserMapper {
​
    /**
     * MyBatis面向接口编程的两个一致
     * 1.mapper映射文件的namespace要和mapper接口的全类名保持一致
     * 2.mapper映射文件中SQL语句的id要和mapper接口中的方法名一致
     *
     * mybatis中的对应关系:
     * 表--->实体类--->mapper接口--->mapper映射文件
     */
​
    //添加用户信息
    int insertUser();
​
}

5、创建MyBatis的映射文件

相关概念:ORMObject Relationship Mapping)对象关系映射。

  • 对象:Java的实体类对象

  • 关系:关系型数据库

  • 映射:二者之间的对应关系

Java概念数据库概念
属性字段/列
对象记录/行

1、映射文件的命名规则:

表所对应的实体类的类名+Mapper.xml

例如:表t_user,映时的实体类为User,所对应的映射文件为UserMapper.xml

因此一个映射文件对应一个实体类,对应一张表的操作(mapper接口相当于dao,而一张表的操作对应于一个dao,换句话来说一张表的操作对应于一个mapper接口和一个mapper映射文件,所以有几张表就对应有几个mapper接口和几个mapper映射文件)

MyBatis映射文件用于编写SQL,访问以及操作表中的数据

MyBatis映射文件存放的位置是src/main/resources/mappers目录下

2、MyBatis中可以面向接口操作数据,要保证两个一致:

a>mapper接口的全类名和mapper映射文件的命名空间(namespace)保持一致

b>mapper接口中的方法名和mapper映射文件中SQL语句的id保持一致

mapper接口中编写java语句的操作方法,mapper映射文件中编写SQL语句的操作方法。然后将mapper接口与mapper映射文件关联的目的是,实现调用mapper接口中的java语句时,运行与该mapper接口关联的mapper映射文件中的SQL语句,以实现对数据库的增删改查操作。

步骤:

1)在resources根目录下创建mappers目录,用于存放mapper映射文件。然后在mappers目录下新建UserMapper.xml文件并配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!--mybatis配置文件中的约束-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
​
<!--将该mapper映射文件与UserMapper接口关联-->
<mapper namespace="com.atguigu.mybatis.mapper.UserMapper">
    <!--添加用户信息,关联UserMapper接口中的insertUser()方法-->
    <insert id="insertUser">
        insert  into t_user values(null, 'admin', '123456', 23, '男', '12345@qq.com')
    </insert>
</mapper>

2)创建晚mapper映射文件后,还需要在核心配置文件mybatis-config.xml中引入该映射文件:

<!--引入映射文件-->
<mappers>
    <!--引入配置好的mapper映射文件-->
    <mapper resource="mappers/UserMapper.xml" />
</mappers>

6、通过junit测试增加功能

  • SqlSession:代表Java程序和数据库之间的会话(HttpSession是Java程序和浏览器之间的会话)。

  • SqlSessionFactory:是"生产"SqlSession的"工厂"。

  • 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都便用这个工厂类来"生产"我们需要的对象。

在test/java目录下新建com/atguigu/mybatis/test包,然后在test包下新建MyBatisTest测试类并配置:

/**
* SqlSession默认不自动提交事务,若需要自动提交事务
* 可以使用SqlSessionFactory.openSession(true)来
* 设置
*/
//测试插入用户信息功能
@Test
public void testMyBatis() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession。设置为true时,会自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
​
    //测试功能
    //调用mapper接口的方法
    int result = mapper.insertUser();
    //提交事务
    sqlSession.commit();
    System.out.println("result:"+result);
}

如果将SqlSession sqlSession = sqlSessionFactory.openSession();设置为true,就不用总结手动提交事务了,例如:

/**
* SqlSession默认不自动提交事务,若需要自动提交事务
* 可以使用SqlSessionFactory.openSession(true)来
* 设置
*/
//测试插入用户信息功能
@Test
public void testMyBatis() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession。设置为true时,会自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
​
    //测试功能
    //调用mapper接口的方法
    int result = mapper.insertUser();
    //提交事务
    //sqlSession.commit();
    System.out.println("result:"+result);
}
  • 遇到错误:

org.apache.ibatis.exceptions.PersistenceException: 
​
Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
​
The error may exist in mappers/UserMapper.xml
​
The error may involve com.atguigu.mybatis.mapper.UserMapper.insertUser
​
The error occurred while executing an update
​
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

原因:pom.xml文件中的“MySQL驱动”依赖版本与安装的MySQL80版本不兼容,导致连接数据库失败。

改进:将“MySQL驱动”依赖的版本改为8.0及以上就可以正常运行。

7、加入log4j日志功能

a>加入依赖

pom.xml文件中导入依赖:

<!--Log4j日志-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

b>加入log4j的配置文件

log4j的配置文件名为log4j.xml,存放的位置是src/main/resourcesml下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
​
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
​
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
​
</log4j:configuration>

日志级别

FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)

从左到右打印的内容越来越详细

8、修改/删除功能

修改功能:

1)先在mapper接口文件UserMapper.java中编写好方法名:

//修改用户信息
void updateUser();

2)在mapper映射文件UserMapper.xml文件中编写SQL语句,以实现相应功能:

<!--修改用户信息,关联UserMapper接口中的updateUser()方法-->
<update id="updateUser">
    update t_user set username = '张三' where id = 4
</update>

3)编写测试类MyBatisTest.java:

//测试修改用户信息功能
@Test
public void testUpdate() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession。设置为true时,会自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //修改用户信息
    mapper.updateUser();
}

删除功能:与修改功能同理

1)先在mapper接口文件UserMapper.java中编写好方法名:

//删除用户信息
void deleteUser();

2)在mapper映射文件UserMapper.xml文件中编写SQL语句,以实现相应功能:

<!--删除用户信息,关联UserMapper接口中的deleteUser方法-->
<delete id="deleteUser">
    delete from t_user where id = 5
</delete>

3)编写测试类MyBatisTest.java:

//测试删除用户信息功能
@Test
public void testDelete() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession。设置为true时,会自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //删除用户信息
    mapper.deleteUser();
}

9、查询功能

9.1、查询实体类对象

1)先在mapper接口文件UserMapper.java中编写好方法名:

//根据id查询用户信息
User getUserById();

2)在mapper映射文件UserMapper.xml文件中编写SQL语句,以实现相应功能:

<!--根据id查询用户信息,关联UserMapper接口中的getUserById()方法
​
    查询功能的标签必须设置为resultType或者resultMap
​
    resultType:设置默认的映射关系
    resultMap:设置自定义的映射关系
​
    此处resultType的作用是将查询到的结果转换为resultType所设置
    的类型,然后再把结果作为最终的返回值,返回给getUserById()方法-->
<select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">
    select * from t_user where id = 3
</select>

3)编写测试类MyBatisTest.java:

//测试根据id查询用户信息功能
@Test
public void testGetUserById() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession。设置为true时,会自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //根据id查询用户信息
    User user = mapper.getUserById();
    System.out.println(user);
}

9.2、查询list集合

1)先在mapper接口文件UserMapper.java中编写好方法名:

//查询所有用户信息
List<User> getAllUser();

2)在mapper映射文件UserMapper.xml文件中编写SQL语句,以实现相应功能:

<!--查询所有用户信息,关联UserMapper接口中的getAllUser()方法-->
<select id="getAllUser" resultType="com.atguigu.mybatis.pojo.User">
    select * from t_user
</select>

3)编写测试类MyBatisTest.java:

//测试查询所有用户信息功能
@Test
public void testGetAllUser() throws IOException {
    //加载核心配置文件
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取SqlSession。设置为true时,会自动提交事务
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    //获取mapper接口对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    //查询所有用户信息
    List<User> list = mapper.getAllUser();
    for (User user : list){
        System.out.println(user);
    }
}

10、properties配置文件

1)在resources根目录下新建jdbc.properties文件,用来存放连接数据库的驱动、url、用户名和密码等信息:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

2)在核心配置文件mybatis-config.xml中引入jdbc.properties,并设置使用jdbc.properties文件中的信息来连接数据库:

引入jdbc.properties文件:

<!--引入jdbc.properties,用来设置连接数据库的信息-->
<properties resource="jdbc.properties" />

设置使用jdbc.properties文件中的信息来连接数据库:

<!--设置连接数据库的驱动-->
<!--不使用properties文件的信息,直接连接数据库-->
<!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!--使用properties文件的信息连接数据库-->
<property name="driver" value="${jdbc.driver}"/>
​
<!--设置连接数据库的连接地址-->
<!--不使用properties文件的信息,直接连接数据库-->
<!--<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>-->
<!--使用properties文件的信息连接数据库-->
<property name="url" value="${jdbc.url}"/>
​
<!--设置连接数据库的用户名-->
<!--不使用properties文件的信息,直接连接数据库-->
<!--<property name="username" value="root"/>-->
<!--使用properties文件的信息连接数据库-->
<property name="username" value="${jdbc.username}"/>
​
<!--设置连接数据库的密码-->
<!--不使用properties文件的信息,直接连接数据库-->
<!--<property name="password" value="123456"/>-->
<!--使用properties文件的信息连接数据库-->
<property name="password" value="${jdbc.password}"/>

完整的mybatis-config.xml文件代码为:

<?xml version="1.0" encoding="UTF-8" ?>   <!--用于声明该xml文件的版本号及编码方式-->
<!--mybatis配置文件中的约束-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
​
<configuration>
​
    <!--引入jdbc.properties,用来设置连接数据库的信息-->
    <properties resource="jdbc.properties" />
​
    <!--
        environments:配置多个连接数据库的环境(一个environments里可以
                      配置多个连接数据库的环境,即多个environment)
        属性:default:设置默认使用的环境的id
    -->
    <!--配置连接数据库的环境-->
    <environments default="development">
        <!--
            environment:配置某个具体的环境
            属性:id:是连接数据库的环境的唯一标识,不能重复
        -->
        <environment id="development">
            <!--
                transactionManager:设置事务管理方式
                属性:type="JDBC/MANAGED"
                     JDBC:表示当前环境中,执行SQL时,使用的
                           是JDBC中原生的事务管理方式,事务的
                           提交或回滚需要手动处理。
                     MANAGED:被管理,例如Spring
            -->
            <!--设置事务管理器的类型为JDBC-->
            <transactionManager type="JDBC" />
            <!--
                dataSource:配置数据源
                属性:type:设置数据源的类型。type="POOLED/UNPOOLED/JNDI"
                POOLED:表示使用数据库连接池缓存数据库连接
                UNPOOLED:表示不使用数据库连接池
                JNDI:表示使用上下文中的数据源
            -->
            <!--设置数据源,作用是设置连接数据库的信息-->
            <dataSource type="POOLED">
​
                <!--设置连接数据库的驱动-->
                <!--不使用properties文件的信息,直接连接数据库-->
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
                <!--使用properties文件的信息连接数据库-->
                <property name="driver" value="${jdbc.driver}"/>
​
                <!--设置连接数据库的连接地址-->
                <!--不使用properties文件的信息,直接连接数据库-->
                <!--<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>-->
                <!--使用properties文件的信息连接数据库-->
                <property name="url" value="${jdbc.url}"/>
​
                <!--设置连接数据库的用户名-->
                <!--不使用properties文件的信息,直接连接数据库-->
                <!--<property name="username" value="root"/>-->
                <!--使用properties文件的信息连接数据库-->
                <property name="username" value="${jdbc.username}"/>
​
                <!--设置连接数据库的密码-->
                <!--不使用properties文件的信息,直接连接数据库-->
                <!--<property name="password" value="123456"/>-->
                <!--使用properties文件的信息连接数据库-->
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <!--引入配置好的mapper映射文件-->
        <mapper resource="mappers/UserMapper.xml" />
    </mappers>
</configuration>

11、类型别名设置

可以在核心配置文件中设置类型别名,以便UserMapper.xml文件的resultType属性的编写。

类型别名的设置有两种方式:

1)使用typeAlias标签

  • 设置了alias属性:

核心配置文件中类型别名的设置:

<!--设置类型别名-->
<typeAliases>
    <!--
        typeAlias:设置某个类型的别名
        属性:type:需要设置别名的类型
             alias:设置type中类型的别名。如果不设置的话
                    默认类型别名为type中类的类名,且不区
                    分大小写
​
        此类型别名为User或者user,使用时不区分大小写
    -->
    <typeAlias type="com.atguigu.mybatis.pojo.User" alias="User" />
</typeAliases>

类型别名在UserMapper.xml文件中的使用:

<!--查询所有用户信息,关联UserMapper接口中的getAllUser()方法-->
<!--resultType除了可以设置为User外,还可以设置为user,因为别名不区分大小写-->
<select id="getAllUser" resultType="User">
    select * from t_user
</select>

注:类型别名不区分大小写。所以类型别名在UserMapper.xml文件中还可以写为user

在该核心配置文件中,typeAliases标签必须放在properties的后面。xml文件的配置中,标签的位置顺序为:

<!--
    MyBatis核心配置文件中,标签的顺序:
    properties?,settings?,typeAliases?,typeHandlers?,
    objectFactory?,objectWrapperFactory?,reflectorFactory?,
    plugins?,environments?,databaseIdProvider?,mappers?
-->
  • 未设置alias属性:

此时别名默认为type设置的类名且不区分大小写。

核心配置文件中类型别名的设置:

<!--设置类型别名-->
<typeAliases>
    <!--
        typeAlias:设置某个类型的别名
        属性:type:需要设置别名的类型
             alias:设置type中类型的别名。如果不设置的话
                    默认类型别名为type中类的类名,且不区
                    分大小写
​
        此类型别名为User或者user,使用时不区分大小写
    -->
    <typeAlias type="com.atguigu.mybatis.pojo.User" alias="User" />
</typeAliases>

类型别名在UserMapper.xml文件中的使用:

<!--查询所有用户信息,关联UserMapper接口中的getAllUser()方法-->
<!--resultType除了可以设置为User外,还可以设置为user,因为别名不区分大小写-->
<select id="getAllUser" resultType="User">
    select * from t_user
</select>

2)使用package标签

该方法更常用

核心配置文件中类型别名的设置:

<!--设置类型别名-->
<typeAliases>
    <!--
        typeAlias:设置某个类型的别名
        属性:type:需要设置别名的类型
             alias:设置type中类型的别名。如果不设置的话
                    默认类型别名为type中类的类名,且不区
                    分大小写
​
        此类型别名为User或者user,使用时不区分大小写
    -->
    <!--<typeAlias type="com.atguigu.mybatis.pojo.User" alias="User" />-->
    <!--以包为单位,将包下所有类型设置为默认的类型别名,即类名,且不区分大小写。该方法更常用-->
    <package name="com.atguigu.mybatis.pojo"/>
</typeAliases>

类型别名在UserMapper.xml文件中的使用:

<!--查询所有用户信息,关联UserMapper接口中的getAllUser()方法-->
<!--resultType除了可以设置为User外,还可以设置为user,因为别名不区分大小写-->
<select id="getAllUser" resultType="User">
    select * from t_user
</select>

注:该使用方法设置类型别名同样不区分大小写。所以类型别名在UserMapper.xml文件中还可以写为user

12、映射文件引入管理

核心配置文件中引入mapper映射文件有两种方式:

1)使用mapper标签一次引入一个

核心配置文件中的设置:

<!--引入映射文件-->
<mappers>
    <!--引入配置好的mapper映射文件-->
    <mapper resource="mappers/UserMapper.xml" />
</mappers>

2)使用package标签一次引入多个

先在resources根目录下新建com/atguigu/mybatis/mapper子目录然后设置核心配置文件:

<!--引入映射文件-->
<mappers>
    <!--引入配置好的mapper映射文件-->
    <!--<mapper resource="mappers/UserMapper.xml" />-->
    <!--
        package:以包为单位引入映射文件,用该方法可以一次性引入多个映射文件,
        而使用mapper标签的话,一次只能引入一个映射文件
        package要求:
            1.mapper接口所在的包要和映射文件所在的包一致
            2.mapper接口要和映射文件的名称一致
    -->
    <package name="com.atguigu.mybatis.xml"/>
</mappers>

注:使用package标签的要求: 1.mapper接口所在的包要和映射文件所在的包一致 2.mapper接口要和映射文件的名称一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值