• javaweb:mybatis:mapper(sql映射+代理开发+配置文件之设置别名、多环境配置、顺序+注解开发)


    1.0版本 sql映射文件实现

    流程

    首先程序进入启动类MyBatisDemo.java中,读取配置文件mybatis-config.xml
    再由mybatis-config的mappers属性

    
            
        
    
    • 1
    • 2
    • 3

    找到sql映射文件UserMapper.xml文件,通过其中的namespace属性

    
    
    • 1

    找到User类,并和数据库表做映射。

    项目结构

    在这里插入图片描述

    User.java

    package com.itheima.pojo;
    
    public class User {
        String id;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id='" + id + '\'' +
                    '}';
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    MyBatisDemo.java

    package com.itheima;
    
    import com.itheima.pojo.User;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class MyBatisDemo {
        public static void main(String[] args) throws IOException {
            // 加载mybatis核心配置文件,获取SqlSessionFactory
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            // SqlSession,用它执行sql
            SqlSession sqlSession = sqlSessionFactory.openSession();
            // 执行sql
            List users = sqlSession.selectList("test.selectAll");
            System.out.println(users);
            // 释放资源
            sqlSession.close();
            }
        }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    mybatis-config.xml

    
    
    
    
        
        
            
                
                
                    
                    
                    
                    
                    
                
            
        
    
        
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    这里的

    
            
        
    
    • 1
    • 2
    • 3

    是因为UserMapper和mybatis-config同处于一个包,所以可以只写名字。但是如果UserMapper不和其同处于一个包的话,就需要写全路径。

    UserMapper.xml

    
    
    
    
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这里的namespace

    
    
    • 1

    相当于这个mapper文件的唯一标识,不能与其他mapper文件的重复,就相当于外面套了一个test包,在其他地方调用,譬如启动类MyBatisDemo.java中调用时,要用test.方法名。

    2.0版本 mapper代理开发

    注意

    想在resources包下面创建多级目录,譬如"com.itheima.mapper",不能直接创建一个目录,然后名称写"com.itheima.mapper",这样只会默认创建一个"com.itheima.mapper"的目录,而不会自动分级。
    如果想要自动分级,需要写"com/itheima/mapper"

    整体流程

    首先程序进入启动类MyBatisDemo中,读取配置文件mybatis-config.xml
    再由mybatis-config的mappers属性

    
            
        
    
    • 1
    • 2
    • 3

    找到mapper包下面的mapper接口
    因为mapper接口和sql映射文件属于同一个包层次结构,所以由mapper接口可以找到sql映射文件UserMapper.xml。再由其中的resultType字段

        
            select *
            from tb_user;
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    mybatis-config.xml

    
    
    
        
            
                
                
                    
                    
                    
                    
                    
                
            
        
    
        
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    MyBatisDemo

    package com.itheima;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import com.itheima.mapper.UserMapper;
    import com.itheima.pojo.User;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class MyBatisDemo {
        public static void main(String[] args) throws IOException {
            //加载mybatis核心配置文件,获取SqlSessionFactory
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            // 获取SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //获取UserMapper对象,用它直接执行sql方法
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            Listusers = userMapper.selectAll();
            System.out.println(users);
            //释放资源
            sqlSession.close();
            }
        }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    mybatis-config.xml

    
    
    
        
            
                
                
                    
                    
                    
                    
                    
                
            
        
    
        
    
            
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    其中可以使用class=全类名,来找到mapper接口。

            
    
    • 1

    也可以使用包扫描的方式,来找到mapper接口。

            
    
    • 1

    mybatis-config.xml(设置别名+多环境配置+顺序)

    
    
    
        
        
        
            
        
    
        
        
    
            
                
                
                    
                    
                    
                    
                    
                
            
    
            
                
                
                    
                    
                    
                    
                    
                
            
    
    
        
    
        
            
    
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    mybatis-config.xml里面的属性是有顺序的,顺序如下:

    • properties(属性)
    • settings(设置)
    • typeAliases(类型别名)
    • typeHandler(类型处理器)
    • objectFactory(对象工厂)
    • plugins(插件)
    • environments(环境配置)
      • transactionManager(事务管理器)
      • dataSource(数据源)
    • mappers(映射器)

    3.0代码 注解开发

    流程

    和2.0 代理开发一样,但是xml文件里面不需要再写select属性,只需要在pojo的类上面加上对应的注解即可。

    UserMapper.xml

    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    UserMapper.java

    package com.itheima.mapper;
    
    import com.itheima.pojo.User;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface UserMapper {
        @Select("select * from tb_user")
        List selectAll();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    Linux系统输出整数值的shell脚本
    数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...
    leetCode 53.最大子数和 图解 + 贪心算法/动态规划+优化
    数据结构 图
    通讯网关软件006——利用CommGate X2OPCUA实现OPC UA访问DDE数据源
    提示虚拟内存不足可能的原因以及该怎么处理
    【Docker/K8S/Racher】Docker/K8S/Racher安装Redis-20220817
    026利用GANs合成癫痫脑活动2019
    flutter移植arm32位板子
    企业云工如何高效居家协同办公?试试这个方法
  • 原文地址:https://blog.csdn.net/zhiaidaidai/article/details/133779858