背景:

最近“大胆地”把原本一个通过简单的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接口这样的方式。

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

未完待续。

mybatis入门总结的更多相关文章

  1. MyBatis1:MyBatis入门

    MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...

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

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  3. MyBatis入门基础(一)

    一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...

  4. MyBatis入门案例、增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

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

    一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...

  6. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

  7. MyBatis入门学习(二)

    在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了 ...

  8. MyBatis入门学习(一)

    一.MyBatis入门简要介绍(百科) MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyB ...

  9. MyBatis入门案例 增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

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

    一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ****** ...

随机推荐

  1. [转]在windows环境中使用varnish

    varnish 的windows 版本下载地址: http://sourceforge.net/projects/cygvarnish/files/windows-zip-bundle/ 启动:var ...

  2. qt qml scrollbar 移动APP风格的滚动轴

    依附于Flickable组件的滚动轴    自动放置在恰当位置    拖动时显示,不动时消失Lisence: MIT 请保留此声明Author: surfsky.cnblogs.com 2014-12 ...

  3. C语言 04 进制

    %d 或者%i 十进制 %c 输出字符 %p 输出地址 %f 输出小数 %o 八进制 %x 十六进制 一个int类型变量占4字节,占32bit(位) 例子:十进制 int=12  转二进制 0000 ...

  4. 利用 async & await 的异步编程

    走进异步编程的世界 - 开始接触 async/await 利用 async & await 的异步编程 async 的三大返回类型 公司技术需求备忘录

  5. HttpClient中转上传文件

    场景:客户端(浏览器)A---->选择文件上传---->服务器B---->中转文件---->服务器C---->返回结果---->服务器B---->客户端A 有 ...

  6. MessageReceiver

    class MessageReceiver { private RelayEngine<MessageCollection> _MessageRelayEngine; private st ...

  7. [linux系统]--搭建ftp服务器并且 创建用户 设置密码

    下面例子演示创建ftpuser 并且设置密码为ftpuser,ftpuser的目录为/root/ftpuser #!/bin/bash rpm -ivh vsftpd-2.2.2-21.el6.x86 ...

  8. 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉

    0.SDK之必备的基本素质 在项目中免不了要用到各种各样的第三方的sdk,在我现在的工作中就在公司内部积累了各种各样的的公共库(基于.net的,基于silverlight的等等),托管到了内部的nug ...

  9. append追加的使用

    #!/usr/bin/env python def fun(arg) : ret = [] for i in range(len(arg)) : if i % 2 ==1 : ret.append(a ...

  10. Bootstrap_缩略图

    缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或右侧)带有标题.描述等信息. Bootstrap框架将这一部独立成一个模块组件.并通过“thumbnail”样式配合 ...