Mybatis 02 mybatis动态代理

mybatis动态代理:
1、创建(UserMapper)Mapper接口,创建相同名称Mapper.xml映射文件,并且保证映射文件和Mapper接口在同一路径下
2、Mapper.xml映射文件的命名空间和接口的全路径一致
<mapper namespace="com.mapper.UserMapper">
3、statement语句的id和Mapper接口中方法名一致
4、parameterType与接口方法参数列表一致,resultType与接口返回值一致

配置文件

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

    <typeAliases>
        <!--给指定包下的所有类取别名,别名是类名首字母小写-->
        <package name="com.entity"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3307/myb?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--  通过包扫描的方式添加所有的映射文件,只适用于动态代理开发-->
        <package name="com.mapper"/>

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

<!--
    namespace:名称空间和接口的全路径一致 
-->

<mapper namespace="com.mapper.UserMapper">
    <!--statement-->
    <select id="selectAll" resultType="com.entity.User">
        select * from tb_user
    </select>
</mapper>

UserMapper.java

package com.mapper;

import com.entity.User;

import java.util.List;

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

image

test
@Test
    public void testMapper() throws IOException {
        //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3. 执行sql
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.selectAll();
        System.out.println(users);
        //4. 释放资源
        sqlSession.close();
    }
posted @ 2023-09-18 11:42  OYそ  阅读(6)  评论(0编辑  收藏  举报