开发环境搭建主要包括以下几步

1、新建一个JAVA项目(可以只建一个文件夹)

 2、导入jar包

log4j是一个日志包,可以不加,这里为了定位问题添加了该包,下面两个包必须需要。

3、创建数据库

CREATE TABLE `hotel` (
`id` int(11) NOT NULL,
`hotel_name` varchar(20) NOT NULL,
`hotel_address` varchar(20) DEFAULT NULL,
`price` int(11) NOT NULL,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据库如下,手动添加了一些数据

4、配置全局配置文件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/spring_mybatis" />
<property name="username" value="root" />
<property name="password" value="pjf520" />
</dataSource>
</environment>
</environments>
</configuration>

这里配置了数据库连接信息,后面还需要配置包含sql的xml文件位置

5、编写JAVA代码实体类

这里以查询一个酒店列表为例,那么实体类就是酒店

package com.pjf.mybatis.po;

public class Hotel {
private int hotelId;
private String hotelName;
private String hotelAddress;
private int price; public int getHotelId() {
return hotelId;
} public void setHotelId(int hotelId) {
this.hotelId = hotelId;
} public String getHotelName() {
return hotelName;
} public void setHotelName(String hotelName) {
this.hotelName = hotelName;
} public String getHotelAddress() {
return hotelAddress;
} public void setHotelAddress(String hotelAddress) {
this.hotelAddress = hotelAddress;
} public int getPrice() {
return price;
} public void setPrice(int price) {
this.price = price;
} @Override
public String toString() {
return "Hotel [hotelId=" + hotelId + ", hotelName=" + hotelName + ", hotelAddress=" + hotelAddress + ", price="
+ price + "]";
} }

为了方便打印,重写了一个toString方法。

6、编写sql映射文件hotelMapper.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="com.pjf.mybatis.mapper.hotelMapper"> <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
select * from hotel where id=#{id}
</select>
</mapper>

这里sql语句比较简单,就是根据id查询酒店记录

这时候就需要在配置文件mybatis_config.xml中注册hotelMapper.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/spring_mybatis" />
<property name="username" value="root" />
<property name="password" value="tuniu520" />
</dataSource>
</environment>
</environments> <!-- 配置包含sql语句的xml文件 -->
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>

7、编写测试类

package com.pjf.mybatis.po;

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 TestHotel {
@Test
public void test() throws IOException {
// 根据配置文件创建一个SqlSessionFactory对象
String resource = "mybatis_config.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); // 根据SqlSessionFactory对象来对数据库进行增删改查
// 一个SqlSession代表一次和数据库的会话,需要打开和关闭
SqlSession session = sessionFactory.openSession();
// 根据sql的唯一标识(namespace+sql的id)来通知mybatis来执行哪个sql语句
String statement = "com.pjf.mybatis.mapper.hotelMapper.getHotel"; // 执行查询返回一个hotel对象
// 这里selectOne有两个参数,第一个是sql的唯一标识,告知mybatis执行哪个sql,
// 后面一个是sql的动态参数,这里是查询id=1001的酒店
Hotel hotel = session.selectOne(statement, 1001);
System.out.println(hotel); // sqlsession用完关闭回话
session.close();
}
}

8、查看结果

运用了log4j可以看到查询的sql语句,方便了我们定位。但我们发现虽然查询出了结果,但是hotelName值和hotelAddress值没取到,这是因为hotel类中定义的变量和数据库中的表的字段不一致导致的。

可以修改sql印刷文件中的语句为(当然后面mybatis针对这种问题有其他的解决办法)

select id as hotelId,hotel_name as hotelName, hotel_address as hotelAddress, price from hotel where id=#{id}

就可以看到正确结果了

mybatis学习(二)——环境搭建的更多相关文章

  1. mybatis学习一 环境搭建

    第一步导入Jar包 第二步配置sqlMapConfig.xml文件,xml文件放在src下面 <?xml version="1.0" encoding="UTF-8 ...

  2. Mybatis系列全解(二):Mybatis简介与环境搭建

    封面:洛小汐 作者:潘潘 Mybatis 是一套持久层框架,灵活易用,特别流行. 前言 Mybatis系列全解,我们预计准备10+篇文章,让我们了解到 Mybatis 的基本全貌,真正从入门到上手,从 ...

  3. hive_学习_01_hive环境搭建(单机)

    一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...

  4. hbase_学习_01_HBase环境搭建(单机)

    一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机)  ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...

  5. hadoop_学习_02_Hadoop环境搭建(单机)

    一.环境准备 1.说明 hadoop的下载来源有: 官方版本:http://archive.apache.org/dist/hadoop/ CDH版本:http://archive.cloudera. ...

  6. mybatis:开发环境搭建--增删改查--多表联合查询(多对一)

    什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或 ...

  7. 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...

  8. 从零开始学Xamarin.Forms(二) 环境搭建、创建项目

    原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建:     1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...

  9. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  10. Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda

    Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...

随机推荐

  1. apache下设置域名多站点访问及禁止apache访问80端口

    apache下设置域名多站点访问 当前系统:macOS High Sierra 域名访问配置指定端口后,不同域名只能配置不同的端口 apache配置目录: sudo vim /etc/apache2/ ...

  2. 使用python批量导入txt导入excel表格(公司电脑设备ip和人员统计)

    #!/bin/env python # -*- encoding: utf- -*- import datetime import time import os import sys import x ...

  3. div+css实现几种经典布局的详解

    一.左右两侧,左侧固定宽度200px,右侧自适应占满 <div class="divBox"> <div class="left">&l ...

  4. Freemarker入门小案例(生成静态网页的其中一种方式)

    其实生成静态网页的方式有好多种,我昨天看了一下,Freemarker是其中一种,但是Freemarker现在我们都用得比较少了,现在用得ActiveMQ用来发送信息到静态页面,不过想了一下这个小东西, ...

  5. python之道07

    2.用户输入一个数字,判断一个数是否是水仙花数. 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1******3 + 5****** ...

  6. java后台验证码的生成

    前台代码: <tr> <td>验证码</td> <td><input name="checkCode" type=" ...

  7. XDB基于Library的备份及恢复

    基于standalone全备份 语句: xdb backup --federation xhive://localhost:1235 --standalone --file E:\xdbData\xD ...

  8. Shell脚本中时间处理

    Shell脚本中时间处理 1.脚本内容 #!/bin/bash #环境变量 #设置环境变量和sql文件格式相符 source /etc/profileexport LD_LIBRARY_PATH=&q ...

  9. 【DB_MySQL】查询语句中各子句的执行顺序

    1. FROM 指明查询来源 2. WHERE筛选元组 3. GROUP BY进行分组 4. HAVING 筛选分组 5. SELECT 投影出指定的字段列 6. ORDER BY 对结果集排序 7. ...

  10. simulation clock gen unit (推荐)

    //Normal Clock Block always begin:clk_blk clk <=; # clk<=; #; end //Improved Clock Block, impr ...