Mybatis入门(四)配置别名(二)

这一章我们练习一下Mybatis的别名,这大大的提高了我们的开发效率

类型别名(typeAliases)

类型别名是为 Java 类型设置一个短的名字。 它只和 XML 配置有关,作用在于用来减少类完全限定名的冗余。

目录:

我们只需要配置Mybatis-config文件和UserMapper.xml文件即可:

Mybatis-config.xml配置:

添加typeAliases标签,typeAlias可以自定义包的名字

<?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">


<!--Mybatis核心配置类-->
<configuration>
    <!--引入外部配置文件之后,driver的值都需要用${}来引用db.propertion文件里的id-->
    <properties resource="db.properties"/>

    <typeAliases>
        <!--别名命为User,type是路径-->
        <typeAlias type="com.hdlf.pojo.User" alias="User"></typeAlias>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库jdbc包-->
                <property name="driver" value="${driver}"/>
                <!--数据库的url地址,serverTimezone=UTC设置时区,UseUnicode=true&amp;characterEncoding=UTF-8设置编码格式不然会乱码-->
                <property name="url" value="${url}"/>
                <!--数据库的账号-->
                <property name="username" value="${username}"/>
                <!--数据库的密码-->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--注册UserMapper文件!!!-->
    <mappers>
        <mapper resource="com/hdlf/dao/UserMapper.xml"/>
    </mappers>
</configuration>
扫描二维码关注公众号,回复: 8568536 查看本文章

UserMapper.xml配置文件:

我们把原先的resultType的com.hdlf.pojo.User改成User之后看着是不是很舒服,也更加方便

<?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">
<!--绑定UserMapper接口,大白话就是实现UserMapper这个接口的功能-->
<mapper namespace="com.hdlf.dao.UserMapper">
    <!--id就是UserMapper里的方法名字,里面写执行MySQL的命令 resultType返回的类型-->
    <select id="getUser" resultType="User">
        SELECT * FROM mybatis.user
    </select>

    <!--增方法,接收值是User,因为前面的接口里写了getinsert方法里的类型值是User类型的-->
    <insert id="getinsert" parameterType="User" >
        INSERT INTO mybatis.user(id,name,pwd) values (#{id},#{name},#{pwe})
    </insert>

    <!--删方法,接收值是int类型,这样可以根据id来删除方便-->
    <delete id="getdelete" parameterType="int">
        DELETE FROM mybatis.user WHERE id = #{id}
    </delete>

    <!--改方法,接收值是User,因为前面的接口里写了getinsert方法里的类型值是User类型的-->
    <update id="getupdate" parameterType="User">
        update mybatis.user set name=#{name},pwd=#{pwe} where id=#{id};
    </update>

    <!--接受值是int,但需要返回值必须是User因为UserMapper接口写的方法返回值是User-->
    <select id="getselect" resultType="User" parameterType="int">
        SELECT * FROM mybatis.user WHERE id = #{id}
    </select>
</mapper>

结果:

可以正常运行

接下来我们使用package属性来测试一下

把typeAlias改成package

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">


<!--Mybatis核心配置类-->
<configuration>
    <!--引入外部配置文件之后,driver的值都需要用${}来引用db.propertion文件里的id-->
    <properties resource="db.properties"/>

    <typeAliases>
        <!--别名命为User,type是路径-->
<!--        <typeAlias type="com.hdlf.pojo.User" alias="User"></typeAlias>-->

        <!--扫描包,名字是user大写也可以-->
        <package name="com.hdlf.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库jdbc包-->
                <property name="driver" value="${driver}"/>
                <!--数据库的url地址,serverTimezone=UTC设置时区,UseUnicode=true&amp;characterEncoding=UTF-8设置编码格式不然会乱码-->
                <property name="url" value="${url}"/>
                <!--数据库的账号-->
                <property name="username" value="${username}"/>
                <!--数据库的密码-->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--注册UserMapper文件!!!-->
    <mappers>
        <mapper resource="com/hdlf/dao/UserMapper.xml"/>
    </mappers>
</configuration>

 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">
<!--绑定UserMapper接口,大白话就是实现UserMapper这个接口的功能-->
<mapper namespace="com.hdlf.dao.UserMapper">
    <!--id就是UserMapper里的方法名字,里面写执行MySQL的命令 resultType返回的类型-->
    <select id="getUser" resultType="user">
        SELECT * FROM mybatis.user
    </select>

    <!--增方法,接收值是User,因为前面的接口里写了getinsert方法里的类型值是User类型的-->
    <insert id="getinsert" parameterType="user" >
        INSERT INTO mybatis.user(id,name,pwd) values (#{id},#{name},#{pwe})
    </insert>

    <!--删方法,接收值是int类型,这样可以根据id来删除方便-->
    <delete id="getdelete" parameterType="int">
        DELETE FROM mybatis.user WHERE id = #{id}
    </delete>

    <!--改方法,接收值是User,因为前面的接口里写了getinsert方法里的类型值是User类型的-->
    <update id="getupdate" parameterType="user">
        update mybatis.user set name=#{name},pwd=#{pwe} where id=#{id};
    </update>

    <!--接受值是int,但需要返回值必须是User因为UserMapper接口写的方法返回值是User-->
    <select id="getselect" resultType="user" parameterType="int">
        SELECT * FROM mybatis.user WHERE id = #{id}
    </select>
</mapper>

结果无疑是和上面的结果是一样的。

还要一种是注解别名这个更方便,@Alias("name")只需要在实体类上就可以

User类:

package com.hdlf.pojo;

import org.apache.ibatis.type.Alias;
//mybatis注解别名
@Alias("user")
public class User {
    private int id;
    private String name;
    private String pwd;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwe='" + pwd + '\'' +
                '}';
    }

    public User() {
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwe() {
        return pwd;
    }

    public void setPwe(String pwe) {
        this.pwd = pwe;
    }
}

猜你喜欢

转载自www.cnblogs.com/jzfanqiejiang/p/12186770.html