Java框架_Mybatis框架4_开发细节补充与常见问题

1.在上面的案例中,我们使用到的mapper映射文件只要一个,在配置文件中也是单独引入mapper文件的,而在实际开发环境中,往往需要写多个映射文件,所以这就需要在配置文件中来批量扫描引入mapper。

在进行批量扫描时,要遵循的一点是:确保mapper文件与mapper接口在同一目录下,且二者前缀名称是一致的,如下图:

在框架配置文件中配置批量扫描:

<mappers>
<package name="mapper"/> 
</mappers>

2.Mapper代理开发方法中的selectOne和selectList

    动态代理对象调用sqlSession.selectOne()和sqlSession.selectList()是根据mapper接口方法返回值决定,如果返回list则调用selectList方法,如果返回单个对象则调用selectOne方法。

3.在mybatis的配置文件中使用全局配置标签<settings>

    在<settings>标签中可以配置框架的全局设置,比如缓存、懒加载模式等:

<settings>
	<setting name="" value=""/>
</settings>

4.在mybatis的配置文件中使用typeAliases标签来进行类的别名定义,比如:

<typeAliases>
	<typeAlias type="mapper.UserMapper" alias="user"/>
</typeAliases>alias="user"/>
</typeAliases>

这样配置后,在mapper映射文件中的输入参数类型或者返回值类型如果是一个pojo,那么就不需要写该pojo的全限定名称了,而是可以用这个别名来代替它,

设置别名后:

<select id="findUserById" parameterType="java.lang.Integer" resultType="user">
	select * from user where id=#{id}
</select>resultType="user">
	select * from user where id=#{id}
</select>

上面代码中的resultType使用别名代替。

此外,我们还可以进行批量定义别名,而在批量定义的时候,会默认以类名的小写来定义该类的别名:

<typeAliases>
	<package name="mapper"/>
</typeAliases>

针对于mapper目录下的批量定义,默认以类名的小写来定义该类的别名。

5.mybatis的自动别名

    上面我们在mapper映射文件中写sql时,凡是涉及到输入/输出类型时,都是写类型的全限定名的,其实针对于一些数据类型,mybatis是支持自动别名转换的,如下表:

所以在涉及到以上数据类型的输入输出参数时,并不需要我们去写全限定名,比如:

<select id="findUserByName" parameterType="string" resultType="model.User">
	select * from user where uname like '%${value}%'
</select>parameterType="string" resultType="model.User">
	select * from user where uname like '%${value}%'
</select>

可以将java.lang.String替换为string

    

猜你喜欢

转载自blog.csdn.net/m0_37808093/article/details/81042957