mybatis入门总结

背景:

最近“大胆地”把原本一个通过简单的JDBC连接数据库进行修改和查找操作的小项目改成用mybatis了。。

周四得到任务,周一要完成的,说是要添加查询条件和添加查询字段,修改的字段也多了几个,才突然发觉简单的JDBC已经满足不了我了,改SQL实在不是一般的麻烦。

因为之前在别人的框架上用过一点mybatis,觉得很是方便,所以决定试一试,把项目改成用mybatis的。

不多说,进入正题。

1.导包

下载一个mybatis-3.1.1.jar,放到WEB-INF的lib下,并加入build path

2.创建配置文件 conf.xml

<!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.microsoft.sqlserver.jdbc.SQLServerDriver" />
            <property name="url" value="jdbc:sqlserver://192.168.10.210:1433;DatabaseName=MyDB" />
            <property name="username" value="sa" />
            <property name="password" value="123456" />
        </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/chanbo/mapping/ResultBeanMapper.xml"></mapper>
    </mappers>
</configuration>

所有用到的mapper文件都要在<mappers>标签内配置,数据库的IP、端口、数据库名、用户名、密码都要根据实际情况配置好。

3.使用时的代码 SQLOper.java

import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.betty.bean.ResultBean;
import com.betty.mapping.IResultBeanMapper;

public class SQLOper {
    public List<ResultBean> getResultByCount(int _count){
        InputStream is = SQLOper.class.getClassLoader().getResourceAsStream("conf.xml");
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = ssf.openSession();
        IResultBeanMapper rbm = session.getMapper(IResultBeanMapper.class);
        List<ResultBean> rb = rbm.getResultByCount(10);
        session.close();
        return rb;
    }
}

其中SqlSessionFactory及以上的部分可以抽取出来,放到类的构造器里面,避免每次调用方法时都要创建。

如果是增删改的操作集合,要判断SQL语句返回的结果是否成功,根据情况进行session.commit();或者session.rollback();,最后都不要忘了session.close();(听说mybatis3以上的版本会自动close)。

4.mapper接口

import java.util.List;

import org.apache.ibatis.annotations.Param;
import com.betty.bean.ResultBean;

public interface IResultBeanMapper {
    List<ResultBean> getResultByCount(@Param("count") int _count);
}

5.mapper文件 ResultBeanMapper.xml

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.betty.mapping.IResultBeanMapper">
    <select id="getResultByCount" resultType="com.betty.bean.ResultBean">
        select top ${count}
        name,age
        from user
    </select>
</mapper>

6.bean文件 ResultBean.java

就是一个普通的POJO,就不贴代码了。

对于操作mapper还有另一种不需要接口的方式:

<mapper namespace="com.betty.mapping.ResultBeanMapper">

<select id="getResultByCount" parameterType="int" resultType="com.betty.bean.ResultBean">

select top ${count}

name,age

from user

</select>

</mapper>

使用时:

List<ResultBean> rb = session.selectList("com.betty.mapping.ResultBeanMapper", _count);

也是可以获取到数据的,但是这样的话就只能传一个入参,很多时候都没办法满足需要,所以才有了使用mapper接口这样的方式。

代码只提炼了有用的部分,这样比较简明扼要,细微错误稍加修改即可。

未完待续。

时间: 2024-10-28 03:04:26

mybatis入门总结的相关文章

MyBatis1:MyBatis入门

MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of para

MyBatis入门基础(一)

一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记录于此,方便大家参考,也方便自己查阅. 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么问题. package com.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.P

mybatis入门学习之(1)+简单例子测试

Mybatis 入门之(1)环境配置+简单例子测试 什么是MyBatis? 它是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和POJOs(Plan Old Java Objects,普通的 Java对象)映射成数据库中的记录. 其实简单一点说mybatis就是一直访问数据库的技术,它是现在比较流行的一个持久层框架,如果你对JDBC熟悉那就更容易

mybatis入门基础(二)----原始dao的开发和mapper代理开发

阅读目录 一:原始dao开发方法 二:mapper代理方法(只需要mapper接口,相当于dao接口) 承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先苦后甜嘛! 回到顶部 一:原始dao开发方法 概要:1.在上篇中搭建好的框价中编写dao接口和dao实现类 2.向dao接口实现类中注入SqlSessionFactory,在方法体内通过SqlSe

mybatis系列笔记(1)---mybatis入门

mybatis入门   MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进. 目前mybatis在github上托管.  git(分布式版本控制,当前比较流程) MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费

MyBatis入门案例、增删改查

1.MyBatis是什么?(下载地址:https://github.com/mybatis/mybatis-3/releases) MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费

Mybatis入门学习篇(三)之模糊查询的两种写法

在上一讲(Mybatis入门学习篇(二)之基于注解的增删改查)中,需要用到模糊查询,比如我想查找所有含有'zjh'的Student的信息.如果是在数据库中,那么我们可以方便的使用通配符%:select * from student where name like '%zjh%' .但是如果在mybatis中直接像sql中那样,就会报错.遂百度,无果,偶然在一篇帖子中看到,遂记录下来,以备后用. 方法一: 在要查询的字符串合适位置加上%,如这里的'zjh'就应该为'%zjh%'.这是一个很管用的方

mybatis入门_mybatis基本原理以及入门程序

一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的重复性编码 二.mybatis执行流程 Mybatis基本的执行流程如下图所示: 三.mybatis入门程序 3.1 通过mybatis完成通过主键(id)查询用户(user) 3.1.1.项目环境搭建 建立的是Java项目.采用的mybatis版本为3.2.7. 需要导入mybatis核心jar包

MyBatis入门(五)---延时加载、缓存

一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @[email protec

MyBatis入门(二)---一对一,一对多

一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybatis ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @[emai