这一章我们练习一下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&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&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; } }