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接口这样的方式。
代码只提炼了有用的部分,这样比较简明扼要,细微错误稍加修改即可。
未完待续。
mybatis入门总结的更多相关文章
- MyBatis1:MyBatis入门
MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- MyBatis入门基础(一)
一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...
- MyBatis入门案例、增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- mybatis入门_mybatis基本原理以及入门程序
一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- MyBatis入门学习(二)
在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了 ...
- MyBatis入门学习(一)
一.MyBatis入门简要介绍(百科) MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyB ...
- MyBatis入门案例 增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- MyBatis入门(五)---延时加载、缓存
一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ****** ...
随机推荐
- redis 参考文章
1. redis配置认证密码:http://blog.csdn.net/zyz511919766/article/details/42268219
- java socket 多线程通讯 使用mina作为服务端
客户端代码不变,参照 http://www.cnblogs.com/Westfalen/p/6251473.html 服务端代码如下: import java.io.IOException; impo ...
- Table排序
<html> <head> <title>tablesorter表单排序插件</title> <link type ="text/css ...
- 【转载】Windows下VSCode编译调试c/c++
懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...
- Tempter of the Bone
Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he ...
- linux文件基本属性
在Linux中第一个字符代表这个文件是目录.文件或链接文件等等. 当为[ d ]则是目录 当为[ - ]则是文件: 若是[ l ]则表示为链接文档(link file): 若是[ b ]则表示为装置文 ...
- #听云博客大赛#如何在自己的App嵌入听云产品监控App性能
近日浏览园子文章的时候,发现博客园与听云正在举办“听云原创博文”大赛.最近手上正好正在开发一款iOS的应用,所以就用听云App来监测一下我的App各个指标,为我的应用保驾护航.下面,我就从头到尾演示下 ...
- 【前端】原生event对象和jquery event对象的区别
标准DOM event对象转换成 jQuery event对象 $(event) jQuery event对象转换成 标准DOM event对象 event.originalEvent
- ifconfig 下面的一些字段(errors, dropped, overruns)
一台机器经常收到丢包的报警,先看看最底层的有没有问题: # ethtool em2 | egrep 'Speed|Duplex' Speed: 1000Mb/s Duplex: Full # etht ...
- uwsgi出现invalid request block size: 21573 (max 4096)...skip解决办法
buffer-size uwsgi内部解析的数据包大小,默认4k. 如果准备接收大请求,你可以增长到64k. 允许uwsgi接收到32k,更大的会被丢弃. xweb.ini [uwsgi]socket ...