mybatis学习(二)——环境搭建
开发环境搭建主要包括以下几步
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学习(二)——环境搭建的更多相关文章
- mybatis学习一 环境搭建
第一步导入Jar包 第二步配置sqlMapConfig.xml文件,xml文件放在src下面 <?xml version="1.0" encoding="UTF-8 ...
- Mybatis系列全解(二):Mybatis简介与环境搭建
封面:洛小汐 作者:潘潘 Mybatis 是一套持久层框架,灵活易用,特别流行. 前言 Mybatis系列全解,我们预计准备10+篇文章,让我们了解到 Mybatis 的基本全貌,真正从入门到上手,从 ...
- hive_学习_01_hive环境搭建(单机)
一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...
- hbase_学习_01_HBase环境搭建(单机)
一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机) ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...
- hadoop_学习_02_Hadoop环境搭建(单机)
一.环境准备 1.说明 hadoop的下载来源有: 官方版本:http://archive.apache.org/dist/hadoop/ CDH版本:http://archive.cloudera. ...
- mybatis:开发环境搭建--增删改查--多表联合查询(多对一)
什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或 ...
- 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)
前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...
- 从零开始学Xamarin.Forms(二) 环境搭建、创建项目
原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建: 1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...
- 从0开始学爬虫9之requests库的学习之环境搭建
从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...
- Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda
Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...
随机推荐
- C#语言 数据类型 类型转换
数据类型有 基本数据类型 和 引用数据类型 两大类型. 数据类型 C#语言 .NET(通用语言) 大小(字节) 值区间 基本数据类型 值类型 整型 不能存在小数点,可以有负数 byte Byte ...
- search bar 自定义背景
//修改搜索框背景 self.searchCarKeyWord.backgroundColor=[UIColorclearColor]; //去掉搜索框背景 //1. [[self.searchCar ...
- ubuntu 14.04 安装mysql,并配置远程连接和中文乱码
1. 安装MySQL的jar root@computer-PowerEdge-T30:~# sudo apt-get install mysql-server mysql-client在本次安装中,根 ...
- eclipse报错MA
今天有个总监晒了张tomcat7.0崩溃忘记怎么搞了,大家都在吐槽"一个[总监](经常水群)竟然不会这个".敲上来. Problem Occurred系列: 'Starting T ...
- UVA 1661 Equation (后缀表达式,表达式树,模拟,实现)
题意:给出一个后缀表达式f(x),最多出现一次x,解方程f(x) = 0. 读取的时候用一个栈保存之前的结点,可以得到一颗二叉树,标记出现'X'的路径,先把没有出现'X'的子树算完,由于读取建树的时候 ...
- Luogu P5349 幂
大力数学题,发现自己好久没写多项式水平急速下降,求逆都要写挂233 首先看到关于多项式的等比数列求和,我们容易想到先求出每一项的系数然后最后累加起来即可,即设\(f_i=\sum_{n=0}^{\in ...
- ios之UISplitViewController
iPad的屏幕比iPhone大,所以在界面上,iPad比iPhone多一个UISplitViewController,用来实现iPad在横屏时,分两栏显示所需要的界面,可以一边是目录一边是具体的内容. ...
- ThinkPHP项目怎么运行?
1.下载ThinkPHP项目 2.安装核心框架framework 3.配置集成开发环境:wamp或者xampp或者phpStudy
- vue 点击倒计时 ajax 封装
方法:function(){ var that = this; if (that.time == 0) { that.disabled = false; that.text ="点击获取&q ...
- ThreadLocal类使用说明
ThreadLocal类用于创建一个线程本地变量 在Thread中有一个成员变量ThreadLocals,该变量的类型是ThreadLocalMap,也就是一个Map,它的键是threadLo ...