mybatis的那些事
转载请注明出处:http://www.cnblogs.com/yidaijiankuanzhongbuhui/p/7003993.html
用mybatis一年多了,一直是别人搭好框架,配置好各种配置文件和导入jar包,然后自己知道怎么用!回过头来再重新整理学习mybatis,发现很多事如果自己亲手操作会更好!
mybatis 官方文档上对mybatis定义是:mybatis是一流的持久层框架,支持自定义sql、存储过程和高级映射!它消除了几乎所有的JDBC代码、手工设置参数和结果的检索!mybatis可以使用简单的XML或注释进行配置 映射文件、映射接口和Java pojo(普通的旧Java对象)到数据库记录。
mybatis的使用:
- 首先从官方文档中下载jar包和源码包(地址为:https://github.com/mybatis/mybatis-3/releases)。并将jar包放到添加到类路径下;
- 创建mybatis的xml配置文件(名字可以自己任意起)
- 创建实体类的与数据库的映射文件
- 创建数据库连接的SqlSessionFactory(即回话工厂,类似于数据库连接池),并获取回话
- 执行sql 并取出结果
具体操作:
- 创建一个动态web工程,将jar包( 见附件)放到lib目录下并built到类路径下。目录如下
- 创建mybatis的xml配置文件,xml文件中有关于数据库连接的参数配置,用来创建回话工厂SqlSessionFactory。暂时把该文件命名为mybatis_config.xml 代码如下
<?xml version="1.0" encoding="UTF-8" ?>
<!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.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test1"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlMapper/chengjiMapper.xml"/>
</mappers>
</configuration> 首先需要在数据库test1中添加一个表,创建表的sql如下
CREATE TABLE `chengji` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(11) DEFAULT NULL,
`xueke` varchar(255) DEFAULT NULL,
`fenshu` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1然后需要创建一个实体类:
public class chengji { private Integer id;
private String name;
private String xueke;
private Integer fenshu;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getXueke() {
return xueke;
}
public void setXueke(String xueke) {
this.xueke = xueke;
}
public Integer getFenshu() {
return fenshu;
}
public void setFenshu(Integer fenshu) {
this.fenshu = fenshu;
}
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", xueke=" + xueke + ", fenshu=" + fenshu + "]";
} }创建基于xml的映射语句文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="sqlmapper.chengjiMapper" >
<resultMap id="BaseResultMap" type="model.chengji" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="xueke" property="xueke" jdbcType="VARCHAR" />
<result column="fenshu" property="fenshu" jdbcType="INTEGER" />
</resultMap> <select id="selectByPrimaryKey" resultMap="BaseResultMap" >
select
*
from chengji
where id = #{id,jdbcType=INTEGER}
</select> </mapper>我们下面可以写一个test.java 来测试一下:
public class test { public static void main(String[] args) {
SqlSession session = getSqlSessionFactory().openSession();
try {
String resource = "conf/mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
chengji cj = session.selectOne("sqlmapper.chengjiMapper.selectByPrimaryKey", 4);
System.out.println(cj.toString());
} finally {
session.close();
}
} } }最后的打印结果是:chengji [id=4, name=gaoshan, xueke=yuwen, fenshu=99]
本文是作者原创,转载请标明
mybatis的那些事的更多相关文章
- 关于Mybatis的那点事
1.实现关联表查询 1.1. 一对一关联 1). 提出需求 根据班级id查询班级信息(带老师的信息) 2). 创建表和数据 CREATE TABLE teacher( t_id INT PRIMARY ...
- mybatis 一二事(3) - 多表关联查询
db.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/order jdbc.user ...
- mybatis 一二事(2) - 动态代理
db.properties 单独提取出来的数据库配置,方便以后维护管理 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhos ...
- mybatis 一二事(1) - 简单介绍
mybatis呢是一个orm数据库框架,非常适合新人学,门槛相对较低 本人呢曾经是先做的hibernate,后接触的mybatis,接触mabatis前我比较抵触,为啥呢, 当时喜欢hibernate ...
- Mybatis那些事-拦截器(Plugin+Interceptor)
作者:yhjyumi的专栏 数据权限实现(Mybatis拦截器+JSqlParser) Mybatis的拦截器实现机制,使用的是JDK的InvocationHandler. 当我们调用Paramete ...
- MyBatis和SpringMVC集成事务在Junit测试下有效但是在实际项目无效的问题
一.问题说明 项目框架采用SSM,集成了事务回滚(方式见下),在单元测试的时候,测试事务是有效的,但是在实际项目上线的时候,却没有效果. 二.集成方式 application-mybatis.xml( ...
- mybatis BigDecimal Double Long 的坑爹事
写接口的时候别用 public Map<String,Double> selectForRealRemainer(Orders orders); 用这样就行 public Map<S ...
- SpringMVC+MyBatis整合——事务管理
项目一直没有做事务管理,这几天一直在想着解决这事,今天早上终于解决了.接下来直接上配置步骤. 我们项目采用的基本搭建环境:SpringMVC.MyBatis.Oracle11g.WebLogic10. ...
- 【Mybatis架构】 延迟加载
在上一篇博客中,我们提到过有关于Mybatis输出映射中resultMap能够实现延迟加载的事,然而真的是所有的resultMap都能实现延迟加载还是咋地啊?现在我们就来对那一句话做一下阐述和实例说明 ...
随机推荐
- centos搭建java web服务器
1.安装jdk7 //检查jdk是否已经安装 [root@iZwz9catu2mrq92b07d1d0Z ~]# yum list installed | grep java java--openjd ...
- SaltStack 部署案例 02
远程执行 salt '*' state.sls apache '*':代表所有主机 state.sls :是一个模块 apache : 状态 ,表示需要部署的内容,后缀.sls YAML:三板斧 1. ...
- Class 与 Style 绑定
将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强.表达式结果的类型除了字符串之外,还可以是对象或数组. 绑定 HTML Class 对象语法 <div cla ...
- C#开发Windows窗体应用程序的步骤
使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...
- 用python爬取app照片
首先下载一个斗鱼(不下载也可以,url都在这了对吧) 通过抓包,抓取到一个json的数据包,得到下面的地址 观察测试可知,通过修改offset值就是相当于app的翻页 访问这个url,返回得到的是一个 ...
- 责任链模式(Chain of Responsibility)
责任链模式(Chain of Responsibility)接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求 ...
- dataset的使用和图片延时加载的实现
首先,先介绍一下关于javascript中dataset属性..html5中可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放.下面是元素应用data属性的一个例子:~~~~~~~~ ...
- upload 上传类
<?php/**file: fileupload.class.php 文件上传类FileUpload本类的实例对象用于处理上传文件,可以上传一个文件,也可同时处理多个文件上传 */class U ...
- PHP根据传入参数合并多个JS和CSS文件的简单实现
HTML(使用方法): 复制代码代码如下: <link rel="stylesheet" type="text/css" href="cssmi ...
- Java分布式锁实现详解
在进行大型网站技术架构设计以及业务实现的过程中,多少都会遇到需要使用分布式锁的情况.那么问题也就接踵而至,哪种分布式锁更适合我们的项目? 下面就这个问题,我做了一些分析: 分布式锁现状: 目前几乎很多 ...