Mybaitis复习day01

JDBC存在问题

1、频繁的创建,打开,连接,关闭数据库,太耗资源。(连接池解决)
2、Sql语句存在硬编码,不利于维护
3、Sql参数设置硬编码,不利于维护
4、结果集获取,遍历复杂。

Mybadis的背景

ibatis前身,现在用Github管理代码。持久层开源框架。Github是目前全球最大的开源代码托管所,有空丢个hellword上去。目前国内主要是用Mybatis和Hibernate框架,Hibernate门槛高,入门难,特别是表的关系映射R/M设计,mybatis入门简单,sql容易优化,灵活方便。

创建一个Mybatis工程

1、创建一个普通的java Project。
2、导入jar包,包括mysql的驱动包(或者Oracle的),还有去官网下载的mybatis的jar包和依赖包。
3、创建mybatis的核心配置文件SqlMapConfig.xml文件,mybatis也没有自己的sql输出,所以也是依赖log4j。创建log4j.properties文件。
4、创建java bean ,再创建对应的数据库表。比如我创建一个user表。
5、然后创建user对应的usermapper.xml文件,将mapper文件映射到SqlMapConfig.xml文件中。

<!--namespace表示一个类的名字,因为有很多类,每个类都有增删改查,用来隔离sql。-->
<!-- id:statementId
         resultType:查询结果集的数据类型
         parameterType:查询的入参
    -->
    <select id="getUserById" parameterType="int" resultType="com.itheima.mybatis.pojo.User" >
        SELECT * FROM USER WHERE id = #{id1}
    </select>

6、编写Mybatis的操作java代码;

@Test
    public void testGetUserByid() throws IOException {
        // 创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        // 查找配置文件创建输入流
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 加载配置文件,创建SqlSessionFactory对象
        SqlSessionFactory   sqlSessionFactory = sfb.build(inputStream);
        // 创建SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 执行查询,参数一:要查询的statementId ,参数二:sql语句入参
        User user = sqlSession.selectOne("user.getUserById", 1);

        // 输出查询结果
        System.out.println(user);
        // 释放资源
        sqlSession.close();
    }

和hibernate兄弟非常类似
7、抽取SqlSessionFactoryUtils工具类,共享SqlSessionFactory创建过程

/**
 * SqlSessionFactory工具类
 * 
 * @author Steven
 *
 */
public class SqlSessionFactoryUtils {

    /**
     * 单例SqlSessionFactory
     */
    private static SqlSessionFactory sqlSessionFactory;

    static {
        // 创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        try {
            // 查找配置文件创建输入流
            InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            // 加载配置文件,创建SqlSessionFactory对象
            sqlSessionFactory = sfb.build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取单例SqlSessionFactory
     * @return
     */
    public static SqlSessionFactory getSqlSessionFactory() {
        return sqlSessionFactory;
    }

}
以上是查询,添加修改删除同理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值