• MyBatis使用mapper代理方式完成入门案例(对数据库进行查询)


    使用mapper代理方式完成入门案例
        1.定义sql映射文件同名的mapper接口,并且将mapper接口和sql映射文件防止在同一目录下
        2.设置sql映射文件的namespace属性为mapper接口全限定名
        3.在mapper接口中定义方法,方法名就是sql映射文件中的sql语句中的id,并保持参数类型和返回值类型一致
        4.编码
           1.通过SqlSession的getMapper方法获取,Mapper接口的代理对象
           2.调用对应方法完成sql的执行
    细节:如果Mapper接口名称和sql映射文件名称相同,并在同意目录下,则就可以使用包扫描的方式简化sql映射文件的加载
    把更换为

    文件大致格式

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

    在resource新建目录com.itheima.mapper的时候写成com/itheima/mapper,这样接口usermapper和usermapper映射文件就在一个位置了

     

     2.设置sql映射文件的namespace属性为mapper接口全限定名

    在这个usermapper.xml文件内写入 

    1. <mapper namespace="com.itheima.mapper.UserMapper">
    2. <select id="selectAll" resultType="com.itheima.pojo.user">
    3. select * from tb_user;
    4. select>
    5. mapper>

    1. 其中 com.itheima.mapper.UserMapper指向的是com.itheima包下的mapper包下的UserMapper接口

    2.selsectAll只是个名称,过后的测试文件会用到

    3. com.itheima.pojo.user指的是是com.itheima包下的pojo包下的user类,user是这个映射文件的参数类型

    4.select * from tb_user;就是对数据库的执行操作

    以上三个,看文件格式就会了解到

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

    在UserMapper接口内定义方法(List selectAll();)

    这个UserMapper就是接口interface
    1. package com.itheima.mapper;
    2. import com.itheima.pojo.user;
    3. import java.util.List;
    4. public interface UserMapper {
    5. //返回值为集合
    6. List selectAll();
    7. }

    由于映射文件中的参数类型是user,所以我们的返回值类型也需要携程user,又因为数据库中的数据有多种,我们用集合来接受此类型,既是List selectAll();的来源

     4.编码

    (1).通过SqlSession的getMapper方法获取,Mapper接口的代理对象

    (2).调用对应方法完成sql的执行

    1. //3.获取usermapper接口的代理对象
    2. UserMapper userMapper = SqlSession.getMapper(UserMapper.class);
    3. List users = userMapper.selectAll();
    4. System.out.println(users);
    1. package com.itheima;
    2. import com.itheima.mapper.UserMapper;
    3. import com.itheima.pojo.user;
    4. import org.apache.ibatis.io.Resources;
    5. import org.apache.ibatis.session.SqlSession;
    6. import org.apache.ibatis.session.SqlSessionFactory;
    7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    8. import java.io.IOException;
    9. import java.io.InputStream;
    10. import java.util.List;
    11. /*
    12. mybatis代理开发
    13. */
    14. public class MyBatisDemo2 {
    15. public static void main(String[] args) throws IOException {
    16. //1.加载mybatis的核心配置文件,获取SQL session factory
    17. String resource = "mybatis-config.xml";
    18. InputStream inputStream = Resources.getResourceAsStream(resource);//把字符串传进来,转换成一个字节输入流
    19. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    20. //2.获取SQL session的对象用它来执行sql
    21. SqlSession SqlSession = sqlSessionFactory.openSession();
    22. //3.获取usermapper接口的代理对象
    23. UserMapper userMapper = SqlSession.getMapper(UserMapper.class);
    24. List users = userMapper.selectAll();
    25. System.out.println(users);
    26. //4.释放资源
    27. SqlSession.close();
    28. }
    29. }

    细节:如果Mapper接口名称和sql映射文件名称相同,并在同意目录下,则就可以使用包扫描的方式简化sql映射文件的加载(以上一步就已经成功了,这一步是进一步的优话化

    把mybstis-config.xml内:

    更换为

    即在mybstis-config.xml内

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <environments default="development">
    6. <environment id="development">
    7. <transactionManager type="JDBC"/>
    8. <dataSource type="POOLED">
    9. <property name="driver" value="com.mysql.jdbc.Driver"/>
    10. <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
    11. <property name="username" value="root"/>
    12. <property name="password" value="root"/>
    13. dataSource>
    14. environment>
    15. environments>
    16. <mappers>
    17. <package name="com.itheima.mapper"/>
    18. mappers>
    19. configuration>

     把注释的文件改成 没有注释的文件就可以了

  • 相关阅读:
    spring全家桶
    四种进制转换(附java实现代码)
    源码编译安装Apache
    漏洞补丁:漏洞命名(CVE和CNNVD)及补丁查找
    Material Design 风格的 UI 框架 Vuetify 使用初体验
    mysql数据库中的索引-2
    【JS笔记】JSON对象和面向对象编程
    如何让开发者直接在应用后台控制用户的运动状态?
    Qt EventLoop使用原理
    第四章:模板引擎
  • 原文地址:https://blog.csdn.net/qq_51272114/article/details/125905491