生命不止 折腾不止,本章就是从零基础接触mybatis 写给跟我一样懵懂可爱的小白,希望和大家一起进步。
全局配置文件(配置数据源、事务运行等信息)
映射文件是关执行statement的相关信息,包括sql语句、输入参数和输出结果
* 1. 配置文件*—->>
* 2. SqlSessionFactory* (会话工厂) 作用:产生会话 —>>
* 3. sqlSession* 作用:它是一个面向程序员的接口,程序员通过该接口可以对数据库进行增删改查方法 该接口有一个默认的实现:defaultsqlSession类 —->>
* 4. executor*(执行器) sqlsession 本身不能直接操作数据库需要通过executor接口来真正操作数据库 该接口有连个实现:基本执行器、缓存执行器(默认) —–>>
* 5. mappedStatement* 作用:封装了执行statement时的信息, 包括sql语句、输入参数 、输出结果。(输入输出类型:简单类型 pojo hashmap ) —>>
* 6. 数据库*
mybatis 代码由github.com托管 下载地址: http://github.com/mybatis/mybatis-3/releases
解压后如图:
本案例就是通过使用Mybatis 来 查询用户表里的一条记录
确保你的电脑已经配有java环境 和 有一款ide 我使用的是myeclipse
首先要新建工程在工程目录下新建一个与src 同级别的folder 分别命名 config ,并将文件夹加入buildpath的豪华套餐中(为了获取资源须加入buildpath)之后导入mybatis 核心包 (mybatis-3.4.1)和 依赖包(lib目录下) 到项目中
在config 下创建一个xml 文件命名为 SqlMapConfig.xml (名字不唯一 )
<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/mybatis1db?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="User.xml"/>
mappers>
configuration>
比如说要实现一个查询用户的User.xml 在config下新建一个User.xml (这种命名规范是由ibatis遗留下来的 ibatis是Mybatis前身)。
<mapper namespace="com.mybatis1.example.MybatisTest">
<select id="selectId" resultType="com.mybatis1.pojo.User">
select * from USER where id = #{id}
select>
mapper>
在src目录下新建 User.java 和 MybatisTest .java 类 如图
User.java 是一个pojo 也就是一个javabean 。 MybatisTest.java是测试类,里边写一个方法用单元测试看执行结果。
package com.mybatis1.pojo;
public class User {
private int id ;
private String uname ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "id:"+id+"uname:"+uname;
}
}
MybatisTest.java
package com.mybatis1.example;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class MybatisTest {
@Test
public void findUserByIdTest() throws IOException
{
String resource ="SqlMapConfig.xml" ;
//读取配置文件
InputStream is =Resources.getResourceAsStream(resource) ;
//使用SqlSessionFactory这个SqlSessionFactory的实现类来创建sqlsessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is) ;
// 创建 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession() ;
//调用SqlSession的增删改差的方法
//第一个参数为statement的唯一标示, 第二个为查找条件的参数 这里查找 id 为1
com.mybatis1.pojo.User user= sqlSession.selectOne("com.mybatis1.example.MybatisTest.selectId",1) ;
//输出查询用户的结果。
System.out.println(user.toString());
}
}
到此mybatis就准备好了 接着准备一下数据库,数据库都是事先准备好的因为不是重点所以我最后再搞。
CREATE DATABASE mybatis1db ;
USE mybatis1db ;
CREATE TABLE USER(
id INT(5) NOT NULL AUTO_INCREMENT,
uname CHAR(10) NOT NULL,
PRIMARY KEY(id)
);
INSERT INTO USER(uname) VALUES("shaoduo") ;
INSERT INTO USER(uname) VALUES("linxiongcheng") ;
INSERT INTO USER(uname) VALUES("linbingxian") ;
INSERT INTO USER(uname) VALUES("gongshihang") ;
INSERT INTO USER(uname) VALUES("sunxingouba") ;
INSERT INTO USER(uname) VALUES("aaaa") ;
SELECT * FROM USER ;
最后测试一下 直接在MybatisTest 的方法右击run as Junit Test 然后控制台就有了输出信息。
通过使用Mybatis 查询数据库中的一条记录 就是本案例的过程,写的比较仓促,有问题的话希望大家指出。