Mybatis学习(2)

Mybatis Mapper代理开发


 

1.定义SQL映射文件同名的mapper接口,并且mapper接口和sql映射文件放在同一目录下

 

 
因为编译过后的配置文件都在classes中,所以只需要把resouce的目录结构弄成和它的目录结构相同即可在同一目录下。

 

2. 设置SQL映射文件和namespace属性为Mapper接口全限定名

<mapper namespace="com.itheima.mapper.UserMapper">
    <select id="selectAll" resultType="com.itheima.pojo.User">
        select * from tb_user;
    </select>
</mapper>

3.在Mapper接口中定义方法,方法名就是sql映射文件sql语句的id,并保持参数类型和返回值类型一致

public interface UserMapper {
    List<User> selectAll();
}

这里返回值是个List其实是根据Mapper的语义来的,因为查询的是所有的user,所以返回值是个list

<mapper namespace="com.itheima.mapper.UserMapper">
    <select id="selectAll" resultType="com.itheima.pojo.User">
        select * from tb_user;
    </select>
</mapper>

4.编码

  1. 通过SqlSession的getMapper方法获取Mapper接口的代理对象
  2. 调用对应方法完成sql的执行
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.selectAll();

如果Mapper接口名和SQL映射文件名相同,并在同一目录下,则可以通过包扫描方式简化sql映射文件的加载。

   <mappers>
        <package name="com.itheima.mapper"/>
    </mappers>

下面看一下mybatis核心配置文件的属性
先看一下environments配置

 <environments default="test">
        <environment id="development">
            <transactionManager type="JDBC"/>
<!--            数据连接信息-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost/mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>

        </environment>

        <environment id="test">
            <transactionManager type="JDBC"/>
            <!--            数据连接信息-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost/mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>

        </environment>
    </environments>

假如有多个数据源配置,我们可以更改environments的default来指定数据源。
environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment。

下面看一下类型别名的方式,什么意思呢?
就是我们在写mapper映射文件时,resultType需要一个全类名,我们可以给它起个别名。

<mapper namespace="com.itheima.mapper.UserMapper">
    <select id="selectAll" resultType="com.itheima.pojo.User">
        select * from tb_user;
    </select>

   <typeAliases>
        <package name="com.itheima.pojo"/>
    </typeAliases>

这个配置是什么意思呢?就是把com.itheima.pojo这个包下面的所有实体类,都起一个别名,名字就是类名,不区分大小写。

posted @ 2022-03-28 18:29  长情c  阅读(79)  评论(0)    收藏  举报