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 ****** ...
随机推荐
- java socket 多线程通讯
1.目录结构 2.Server.java 代码 package de.bvb.server; import java.net.ServerSocket; import java.net.Socket; ...
- android使用默认程序进行图片拍照已经裁剪,以及设备读取
//代码如下: package com.cbsw.yulechangsuo.activity; import java.io.File;import java.io.FileInputStream;i ...
- div嵌套导致子区域margin-top失效不起作用的解决方法
有两个嵌套关系的div,如果外层div的父元素padding值为0, 那么内层div的margin-top或者margin-bottom的值会"转移"给外层div,使父元素产生上外 ...
- Reportng报告替代testng
1,工程导入jar包
- 使用日期控件datePicker,阻止移动端的自动调取键盘的事件
方法:简单来说就是阻止input的默认事件. 因为datePicker就是用input来封装的,所以直接阻止input的输入事件就ok: 很简单,把input field属性readonly设置为tr ...
- String 字符串递归截取字节字符串
public static String idgui(String s,int num)throws Exception{ int changdu = s.getBytes("UTF-8&q ...
- 用Python生成组织机构代码,附源码
#!/usr/bin/python import random def haoma(): ww = [3,7,9,10,5,8,4,2]#suan fa yin zi cc = [] dd=0 for ...
- oracle 自增ID
drop sequence SEQ_sys_dictionary; create sequence SEQ_sys_dictionary INCREMENT BY START WITH ; creat ...
- Crontab中的除号(slash)到底怎么用?
crontab 是Linux中配置定时任务的工具,在各种配置中,我们经常会看到除号(Slash)的使用,那么这个除号到底标示什么意思,使用中有哪些需要注意的地方呢? 在定时任务中,我们经常有这样的 ...
- 23.mysql集群(master-master)
参考: http://blog.csdn.net/mr__fang/article/details/8692480 http://www.2cto.com/database/201201/116756 ...