1. 关于MyBatis中别名机制 : <typeAliases>
在MyBatis的核心配置文件中可以起别名:
namespace不能使用别名机制。resultType可以使用别名机制
<!--起别名--> <typeAliases> <typeAlias type="com.xiaofan.mybatis.pojo.Car" alias="aaa"/> <typeAlias type="com.xiaofan.mybatis.pojo.Log" alias="bbb"/> 或者 <typeAlias type="com.powernode.mybatis.pojo.Car"/> <typeAlias type="com.powernode.mybatis.pojo.Log"/> <!-- type: 指定给哪个类型起别名 alias:指定别名 注意:别名不缺分大小写。alias属性是可以省略的。有默认的别名。 省略alias之后,别名就是类的简名,比如:com.xiaofan.mybatis.pojo.Car的别名就是Car/car/cAR/cAr,不缺分大小写。 --> <!--将这个包下的所有的类全部自动起别名。别名就是类简名。不区分大小写。--> <package name="com.powernode.mybatis.pojo"/> </typeAliases>
2.mybatis-config.xml文件中的mappers标签。
<mapper resource="CarMapper.xml"/> 要求类的根路径下必须有:CarMapper.xml <mapper url="file:///d:/CarMapper.xml"/> 要求在d:/下有CarMapper.xml文件 <mapper class="全限定接口名,带有包名"/> mapper标签的属性可以有三个: resource:这种方式是从类的根路径下开始查找资源。采用这种方式的话,你的配置文件需要放到类路径当中才行。 url: 这种方式是一种绝对路径的方式,这种方式不要求配置文件必须放到类路径当中,哪里都行,只要提供一个绝对路径就行。这种方式使用极少,因为移植性太差。 class: 这个位置提供的是mapper接口的全限定接口名,必须带有包名的。 思考:mapper标签的作用是指定SqlMapper.xml文件的路径,指定接口名有什么用呢? <mapper class="com.powernode.mybatis.mapper.CarMapper"/> 如果你class指定是:com.powernode.mybatis.mapper.CarMapper 那么mybatis框架会自动去com/powernode/mybatis/mapper目录下查找CarMapper.xml文件。 注意:也就是说:如果你采用这种方式,那么你必须保证CarMapper.xml文件和CarMapper接口必须在同一个目录下。并且名字一致。 CarMapper接口-> CarMapper.xml LogMapper接口-> LogMapper.xml .... 提醒!!!!!!!!!!!!!!!!!!!!!!! 在IDEA的resources目录下新建多重目录的话,必须是这样创建: com/powernode/mybatis/mapper 不能这样: com.powernode.mybatis.mapper 这种方式在实际开发中是使用的。 <!-- 将包内的映射器接⼝实现全部注册为映射器 前提是:XML文件必须和接口放在一起。并且名字一致。--> <mappers> <package name="com.xiaofan.mybatis.mapper"/> </mappers>
idea配置⽂件模板 mybatis-config.xml和SqlMapper.xml⽂件可以在IDEA中提前创建好模板,以后通过模板创建配置⽂ 件。
4.插入数据时获取自动生成的主键
useGeneratedKeys="true" 使用自动生成的主键值。 keyProperty="id" 指定主键值赋值给对象的哪个属性。这个就表示将主键值赋值给Car对象的id属性。 <insert id="insertCarUseGeneratedKeys" useGeneratedKeys="true" keyProperty="赋值的属性名"> insert into t_car values(null,#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType}) </insert>