首页 > 其他分享 >MyBatis+Mapper代理 学习

MyBatis+Mapper代理 学习

时间:2022-10-25 17:45:09浏览次数:69  
标签:xml Mapper UserMapper 代理 mybatis sqlSession MyBatis config

MyBatis

一、什么是 MyBatis

  • MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发的。

      持久层:负责将数据保存到数据库的那一层代码

      JavaEE三层架构:表现层、业务层、持久层

      JDBC 缺点:硬编码:需要注册驱动,获取链接;SQL语句

            操作繁琐:需要手动设置参数;手动封装结果集

      Mybatis 优点:免除了几乎所有JDBC的代码,以及设置参数和获取结果集的工作。

  • 官网:MyBatis中文网
  • 官网上由相关的文件文档,可以直接复制过来使用

二、 MyBatis简单入门

1.写xml配置文件:在src->右键->new->File,名字写为 mybatis-config.xml,然后去官网找,直接复制粘贴进来

 

 

 第一块也可以不修改,直接创建一个 mysql.properties文件,将相关信息写进去,然后再在mybatis-config.xml中添加这一条语句就可以使用了。

2.写mysql.properties文件

 

 

 

 

 

 3.映射文件的配置,找官网,写好之后就可以在刚刚的 mybatis-config.xml 映射文件配置那里写上该映射文件的路径了

 

 

 

 

这里也还需要根据自己的路径、数据库表单名字自行修改。 例如我的是User查询

 

因为我下载了mybatisx所以会有提示错误信息,建议都下载一下,后面处理会很方便

下载方式:file->settings->Plugins->查找 MyBatisX,然后下载就可以使用了

 

 4.测试一下

获取SqlSessionFactory对象,也可以在官网上找到代码

public class Test {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis的核心配置文件,获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3.执行sql  前面一长串是命名空间+id(在UserMapper.xml里面可以找到)
        List<User> users=sqlSession.selectList("com.xxxx.mapper.UserMapper.selectAll");
        System.out.println(users);
        //4.释放资源
        sqlSession.close();
    }
}

 想要在idea中配置数据库的配置信息

 

 

 填入相关信息,但是注意URL后面要加上设置时区的这一条语句,不然可能会出现连接不上数据库的情况:原因:MySQL驱动中默认时区是UTC,与本地时间(中国)有时差所以连不上,需要修改时区。

修改时区:IDEA 配置连接数据库报错 Server returns invalid timezone. Need to set ‘serverTimezone‘ property._小薛的BUG日志的博客-CSDN博客_server returns invalid timezone. need to set 'serv

 

 然后,就可以在idea中看到数据库的信息啦

 

 三、在MyBatis中加入Mapper代理

可以解决原生方式中的硬编码,可以简化后期执行SQL

需要定义一个Mapper接口,注意这个UserMapper.xml和UserMapper.java要在同一路径下

方法要和UserMapper.xml里面的id对应起来

 在 mybatis-config.xml 中要修改一下这里

 

 2.测试一下,和前面的结果一样

public class Test {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis的核心配置文件,获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3.执行sql  前面一长串是命名空间+id(在UserMapper.xml里面可以找到)
//        List<User> users=sqlSession.selectList("com.xxxx.mapper.UserMapper.selectAll");

        //获取UserMapper接口的代理对象(这个过程是由mybatis内部实现的)
        UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
        List<User> users=userMapper.selectAll();

        System.out.println(users);
        //4.释放资源
        sqlSession.close();
    }
}

多多练习,熟悉运行流程!

 

标签:xml,Mapper,UserMapper,代理,mybatis,sqlSession,MyBatis,config
From: https://www.cnblogs.com/hmy22466/p/16825680.html

相关文章