zoukankan      html  css  js  c++  java
  • MyBatis数据持久化(二)建立数据库会话

    上篇文章中介绍了我们使用mybatis前的准备工作,并在程序中通过jdbc与mysql数据库成功建立连接,接下来介绍如何使用mybatis与数据库建立会话。我们需要以下几个步骤:
    1.在build path中引入mybatis的jar包。

    2.新建mybatis数据库配置文件SqlMapConfig.xml,它是一个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>
        <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:3306/mybatis?characterEncoding=UTF8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="User.xml"/>
        </mappers>
    </configuration>

    3.新建sql语句配置文件User.xml,我们所有的sql语句均写在该文件中,内容如下:

    <?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">
    <mapper namespace="User">
        <select id="queryUserInfoByName" parameterType="string"  
                resultType="com.mybatis.domain.User">
            select * from User where username = #{username}
        </select>
    </mapper>

    这里我们通过select标签添加一条select语句,并通过mapper标签的namespace属性为这些sql增加一个命名空间。
    4.新建持久化映射类com.mybatis.domain.User,内容如下:

    package com.mybatis.domain;
    
    public class User {
    
        private String username;
        private String password;
        private String phone;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getPhone() {
            return phone;
        }
        public void setPhone(String phone) {
            this.phone = phone;
        }
        //为方便输出信息,我们重写toString方法
        @Override
        public String toString() {
            return  "username:" + username + ",password:" + password + ",phone" + phone;
        }
    
    }
    

    User类有三个属性,分别和数据库中的字段对应,我们需要为每个属性增加setter和getter方法,除此之外,为了方便我们打印对象的属性信息,笔者重写了User类的toString方法。

    5.新建测试类com.mybatis.exam2.MyBatisConn,代码如下:

    package com.mybatis.exam2;
    
    import java.io.Reader;
    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 org.junit.Test;
    import com.mybatis.domain.User;
    
    public class MyBatisConn{
        @Test
        public void testMybatisConn()
        {   
            SqlSession session = null;
            try {
                Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
                SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
                //创建一个数据库会话
                session = sessionFactory.openSession();
                User user = (User)session.selectOne("User.queryUserInfoByName","小王");
                //此处会调用user的toString方法
                System.out.println(user);
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                if(null != session)
                {
                    session.close();
                }
                e.printStackTrace();
            }
            //关闭会话
            if(null != session)
            {
                session.close();
            }
        }
    }
    

    要建立数据库会话,我们首先需要一个SqlSessionFactory对象,可以通过SqlSessionFactoryBuilder对象的build方法获取,它需要一个和数据库配置文件相关的输入流作为参数。
    我们通过 Resources.getResourceAsReader("SqlMapConfig.xml")获取一个输入流对象。
    有了SqlSessionFactory对象,我们通过SqlSessionFactory类的openSession方法就可以建立一个数据库会话,它返回一个DefaultSqlSession对象。

    通过DefaultSqlSession对象,我们可以对数据库进行各种操作,这里调用selectOne方法进行查询,第一个参数指定sql配置文件中配置的sql语句,形式为命名空间 + sql语句的ID。第二个参数会被传递到sql中:

    select * from User where username = #{username}

    我们通过#{username}这种形式定义个一个占位符,在本例中最终生成的sql语句为:

    select * from User where username = '小王'

    最后当数据库会话不再使用时,一定不要忘了关闭。

    6.在Outline视图MyBatisConn的testMybatisConn方法上点击右键,Debug As->Junit Test。
    控制台中输出:

    username:小王,password:123456a,phone13535999538

    整个项目的文件结构如下图所示:
    这里写图片描述

    在接下来的文章中,我们会接触到更多关于mybatis的配置和使用方法。

    项目源码:https://github.com/rongbo-j/mybatis-blog

  • 相关阅读:
    JavaWeb_day06_Filter过滤器
    JavaWeb_day05cookie_session_HttpSession
    接口(实例)演示
    FA常用表
    外连接简要总结
    项目操作习惯个人需养成的点
    接口的一般建立过程
    FA模块对折旧的个人理解
    Over分析函数的用法
    html报表 form端提交请求的制作
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468744.html
Copyright © 2011-2022 走看看