01 Mybatis 的配置和使用
一、Mybatis 是什么

MyBatis 是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二、Mybatis 的使用
1、导包
Mybatis 需要以下的 jar 包:
mybatis.jar
mysql-connector-java.jar
使用 Maven 构建的项目,需要在 pom.xml 中添加如下依赖:
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.7</version>
        </dependency>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
2、建表
创建数据库和表,针对MySQL数据库,SQL脚本如下:
create database mybatis_demo;
use mybatis_demo;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
insert into users values(null,'郭靖', 27);
insert into users values(null,'黄蓉', 17);


到此,建表工作已经完成。
3、创建表所对应的实体类
如下图所示:

User 类的代码如下:
package com.nnngu.domain;
public class User {
    // 实体类的属性和表的字段名称一一对应
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}
4、创建用来操作 users 表的 sql 映射文件 userMapper.xml

userMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 -->
<mapper namespace="com.nnngu.mapping.userMapper">
    <!-- 在select标签中编写查询的SQL语句, select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
    resultType="com.nnngu.domain.User"就表示将查询结果封装成一个User类的对象返回
    User类就是users表所对应的实体类
    -->
    <select id="getUser" parameterType="int"
            resultType="com.nnngu.domain.User">
        select * from users where id=#{id}
    </select>
</mapper>
5、创建 Mybatis 的配置文件
创建配置文件 mybatis_config.xml ,在下图所示的位置

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/mybatis_demo"/>
                <property name="username" value="root"/>
                <property name="password" value="1"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 注册userMapper.xml -->
    <mappers>
        <mapper resource="com.nnngu.mapping/userMapper.xml"/>
    </mappers>
</configuration>
6、测试
创建一个Test1类,编写如下的测试代码:
package com.nnngu.test;
import com.nnngu.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class Test1 {
    public static void main(String[] args) throws IOException {
        // mybatis 的配置文件
        String resource = "mybatis_config.xml";
        // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
        // 构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        // 创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的标识字符串,
         * com.nnngu.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
         */
        String statement = "com.nnngu.mapping.userMapper.getUser"; // 映射sql的标识字符串
        // 执行查询返回一个user对象的sql
        User user = session.selectOne(statement, 1);
        System.out.println(user);
    }
}
测试结果:

01 Mybatis 的配置和使用的更多相关文章
- SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解
		使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ... 
- 01 mybatis框架整体概况(2018.7.10)-
		01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ... 
- Mybatis XML配置
		Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ... 
- MyBatis Cache配置
		@(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ... 
- spring和mybatis整合配置
		<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ... 
- Mybatis中配置Mapper的方法
		在这篇文章中我主要想讲一下Mybatis配置文件中mappers元素的配置.关于基础部分的内容可以参考http://haohaoxuexi.iteye.com/blog/1333271. 我们知道在M ... 
- MyBatis 实践 -配置
		MyBatis 实践 标签: Java与存储 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名任意),其配置内容和顺序如下: pro ... 
- SpringMVC+Mybatis+MySQL配置Redis缓存
		SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ... 
- spring整合mybatis(hibernate)配置
		一.Spring整合配置Mybatis spring整合mybatis可以不需要mybatis-config.xml配置文件,直接通过spring配置文件一步到位.一般需要具备如下几个基本配置. 1. ... 
随机推荐
- [20160711][neven代码移植Windows]
			相关说明 neven代码用于人脸检测,该代码是从Android源代码中抽取出来的,可以在Linux系统下通过make命令直接进行编译,并且可以通过代码中opencv目录下的测试文件进行测试. 移植环境 ... 
- [国嵌笔记][026][ARM伪指令]
			ARM机器码 1.汇编程序通过汇编器变成机器码,然后才能在ARM处理器上运行 2.ARM机器码是一个32位的数,被分成了多个段,每个段都有各自的含义 3.格式: cond:表示条件(4位) I:表示源 ... 
- Button重写onClick两种方式
			实现接口和匿名内部类 下午没课,自己又继续安卓的学习,照着书上做了一个left碎片Button点击后动态加载right碎片布局的Test,准备自己再继续做一个单击左碎片的button1 加载右碎片布局 ... 
- DOM解析原理示意
			DOM解析原理示意 
- 关于JWPlayer播放器的一些测试学习
			<!DOCTYPE html><html><head> <title>jwplayer播放器测试</title> <script ty ... 
- HttpUrlConnection使用与总结
			/* * URL请求的类别分为二类,GET与POST请求.二者的区别在于: * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, ... 
- 将自己的代码托管到github上
			这几天一直在做一个爬虫的小demo,代码基本写的差不多了,想着如何把他放在一个地方,如是乎注册了一个github账号,开始了自己的git之旅. 首先是下载git,这个我就不多说啦!到处都有推荐看看廖雪 ... 
- sqlite入门基础(一):sqlite3_open,sqlite3_exec,slite3_close
			打开数据库链接sqlite3_open用法 原型: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sq ... 
- 【开发技术】一些常用的网站[ios]
			http://www.cocoachina.com/ 苹果开发中文网站 http://blog.csdn.net/totogo2010 容芳志的IOS专栏 http://code4app.com ... 
- python_如何对字典进行排序?
			案例: 某班英语成绩以字典的形式存储为: {'lili':78, 'jin':50, 'liming': 30, ......} 依据成绩高低,进行学生成绩排名 如何对字典排序? 方法1: #!/us ... 
