首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis入门案例

Mybatis入门案例

原创
作者头像
韦恩少爷的背
修改2020-02-18 14:31:14
3540
修改2020-02-18 14:31:14
举报
文章被收录于专栏:SSM框架学习SSM框架学习

初学Mybatis Part 3 Mybatis入门案例

哦对了我用的是IDEA

整合log4j

默认的mybatis不能打印出sql日志,不便于查看调试 在resources下导入log4j.properties这一部分大家可以网上查查,我也不知道有没有用,不是很懂,可以评论告诉我 我把我的代码放在下面(我也是copy的别人的)

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d\:axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

Main函数执行入门案例

在test文件夹下面创建一个MybatisTest.java哦

位置
位置

上一p说了不用写dao实现类了 步骤:

  1. 读取配置文件
  2. 创建SqlSessionFactory工厂
  3. 使用工厂生产SqlSession对象
  4. 使用SqlSession对象创建dao接口的代理对象 不改变源码的基础上对已有方法的增强(动态代理)
  5. 使用代理对象执行方法
  6. 释放资源

Mybatis基本步骤
Mybatis基本步骤

步骤解释

第一步

有连接数据库的信息

in = Resources.getResourceAsStream("SqlMapConfig.xml");

第二步

有了工厂就可以操作生产对象

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
/**有了工厂就可以操作生产对象*/
SqlSessionFactory factory = builder.build(in);

SqlSessionFactory是接口不能直接new,得找他的实现

Mybatis在创建工厂的时候把细节省略了,准备了一个SqlSessionFactoryBuilder的对象可以直接new。

就可以builder.build(in)构建工厂把流传进去

然后怎么解析文件怎么封装都和我们无关了,全部交给Mybatis。(我变强了再看源码吧)

第三步

session对象就可以操作数据库

sqlSession=factory.openSession();

第四步

不是直接操作而是用dao操作,但是我们只有dao接口,所以需要创建代理对象

userDao = sqlSession.getMapper(IUserDao.class);

session给我们创建的代理对象,用的getMapper传的自己的,根据这个生成代理对象,有了代理对象就说明方法已经增强过了,能实现功能了。

第五步

调用方法实现功能,这里是findAll

List<User> users =userDao.findAll();
        for(User user: users){
            System.out.println(user);//打印的功能
        }

第六步

释放资源

        session.close();
        in.close();

优化!!!

可能很有疑惑你没一个方法都这样写 重复的步骤也太多了!!!!

可以这样 有个 @Before@After的很给力

    //搞个全局变量
    private InputStream in;
    private SqlSession sqlSession;
    private IUserDao userDao;
    @Before//用于在测试方法执行方法执行之前执行
    public void init()throws Exception{
        //1.读取配置文件 目的是将SqlMapConfig.xml的信息加载进去
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        /**链接数据库的信息*/
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        /**有了工厂就可以操作生产对象*/
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        //  只有Dao的接口没有具体功能的实现所以得想办法把实现加出来
        sqlSession=factory.openSession();
        /**这个对象就可以操作数据库(非直接,用dao操作)*/
        //4.使用SqlSession创建Dao接口的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
        /**括号内的dao接口,我们只有dao接口所以要创建代理对象*/
    }
 @After//用于在方法执行之后执行
    public void destory()throws Exception{
        //提交事务
        sqlSession.commit();
        //6.释放资源
        sqlSession.close();
        in.close();
    }
/**
     * 测试查询所有
     */
    @Test
    public void testFindAll(){
    List<User> users =userDao.findAll();
        for(User user: users){
            System.out.println(user);//打印的功能
        }
    }

这样就好啦

其实在SqlMapConfig中可以采用注解的方式

<mappers>
        <mapper class="com.bruce.dao.IUser"/>
    </mappers>

我们下一Part再捋一捋

(点个赞吧求求了)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 初学Mybatis Part 3 Mybatis入门案例
    • 整合log4j
      • Main函数执行入门案例
        • 步骤解释
          • 优化!!!
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档