前言

  之前一直有直接使用Mybatis,但是没有细致的整理出来。长时间没有使用,细致的内容都忘记了。因此借此机会,从头开始整理,以后可以直接查看此次记录的内容。

Mybatis的介绍

  MyBatis是支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.

  JDBC->dbutils(自动封装)->MyBatis->Hibernate

  参考官网文档介绍:http://www.mybatis.org/mybatis-3/zh/getting-started.html

准备工作

  依赖包

  从Mybatis的官网下载最新的jar,目前github上最新的是mybatis-3.4.6,并下载源码包导入project冲使用。下载mysql的驱动包:mysql-connector-java-5.1.7-bin.jar。下载log4j的jar:log4j-1.2.16.jar(目的是为了让mybatis能够输出日志,便于查看执行过程。此外,这次只使用Mybatis,因此在Java Project中进行验证,没有使用Maven进行管理包。

  数据库

 create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('Tom', 12);
INSERT INTO users(NAME, age) VALUES('Jack', 11);

  配置文件

  src下新建log4j配置文件log4j.properties

     log4j.properties\uFF0C
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG log4j.properties\uFF0C
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

  src新建mybatis的配置文件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"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<!-- <mappers>
<mapper resource="com/lion/test1/UserMapper.xml"/>
</mappers>-->
</configuration>

验证

  1. 新建pojo User 属性 int id,String name,int age  //getter setter toString   注意:此处的属性需和数据库表字段保持一致,不然无法完成字段映射,后面讲解不一致时如何进行字段映射。
  2. 定义操作User对应users表的sql映射文件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="com.lion.test1.UserMapper">
    <select id="selectUser" parameterType="int" resultType="com.lion.pojo.User">
    select * from users where id = #{id}
    </select>
    </mapper>
  3. 在mybatis配置文件mybatis-config.xml中注册映射文件UserMapper.xml  (上面mybatis配置文件中注释掉内容,注意:注册映射文件使用的市文件的路径 / 而不是包路径 . )
    <mappers>
    <mapper resource="com/lion/test1/UserMapper.xml"/>
    </mappers>

    编写测试代码,执行映射文件中的查询

public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
// 加载Mybatis的配置文件 同时也会加载映射文件
InputStream inputStream = Resources.getResourceAsStream(resource);
// 使用XML文件构建sqlSessionFacory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建能执行映射文件中sql的sqlSession
SqlSession session = sqlSessionFactory.openSession();
// 映射sql的标识字符串
String stament = "com.lion.test1.UserMapper.selectUser";
User user = session.selectOne(stament, 1);
System.out.println(user);
}

    Console输出:

2018-05-16 23:48:27,714 [main] DEBUG [com.lion.test1.UserMapper.selectUser] - ==>  Preparing: select * from users where id = ? 
2018-05-16 23:48:27,867 [main] DEBUG [com.lion.test1.UserMapper.selectUser] - ==> Parameters: 1(Integer)
2018-05-16 23:48:27,956 [main] DEBUG [com.lion.test1.UserMapper.selectUser] - <== Total: 1
User [id=1, name=Tom, age=12]

解决字段名与实体类属性名不相同的冲突

  两种方式解决,一种在sql中定义查询字段别名,另一种则是在映射文件中使用resultMap进行字段映射

方式一: 通过在sql语句中定义别名
<select id="selectOrder" parameterType="int" resultType="_Order">
select order_id id, order_no orderNo,order_price price from orders where order_id=#{id}
</select> 方式二: 通过<resultMap>
<select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">
select * from orders where order_id=#{id}
</select> <resultMap type="_Order" id="orderResultMap">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<result property="price" column="order_price"/>
</resultMap>

Mybatis简单入门的更多相关文章

  1. mybatis简单入门介绍

    mybatis入门 简介 什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及 ...

  2. Mybatis简单入门

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

  3. MyBatis 简单入门

    添加maven 依赖 <dependencies> <dependency> <groupId>org.mybatis</groupId> <ar ...

  4. Mybatis简单入门--插入数据

    1. 开发环境 IDE:IDEA 构建工具:maven4.0.0 MySQL版本:8.0.11. 记得创建好数据库 Mybatis版本:3.5.7 MySQL不同版本的注意事项 驱动类driver-c ...

  5. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  6. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  7. MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  8. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  9. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  10. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

随机推荐

  1. copy "xxxxx\xx.dll xxxxxxx\ ” 已退出,代码为1 错误解决方法

    右键=>属性=>生成事件里面,查看预先生成事件命令行和后期生成事件命令行,查看复制的Dll是否存在已经路径是否正确

  2. 【转】android 常用theme

    android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式android:theme="@android ...

  3. PHP---练习-----留言板

    题目::留言显示 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  4. springmvc小结(下)

    1.@ModelAttribute 1.给共享的数据设置model数据设置,贴在形参上,也可以贴在方法上,设置一个model的key值 2.当controller方法返回一个对象的时候,,缺省值会把当 ...

  5. python3的print函数

    print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出: >>> print('The quick brown fox', 'jumps over', 'the ...

  6. LVS的DR模式负载均衡

    参考项目:http://www.cnblogs.com/along21/p/7833261.html#auto_id_3 LVS的DR模式实现负载均衡 1.环境 lvs-server :192.168 ...

  7. 持续集成之Jenkins+Gitlab实现持续集成

    项目使用git+jenkins实现持续集成 开始构建  General  源码管理 我们安装的是Git插件,还可以安装svn插件  我们将git路径存在这里还需要权限认证,否则会出现error  我们 ...

  8. win764 ping不能用的问题

    1.某日发现,ping突然用不了了 2.百度一搜,有如下解答: 1.右击计算机点属性之后找到系统属性下的环境变量: 2.找到系统变量的"path"之后按“编辑”: 3.变量值前面的 ...

  9. JAVA给你讲它的故事

    计算机语言如果你将它当做一个产品,就像我们平时用的电视机.剃须刀.电脑.手机等, 他的发展也是有规律的. 任何一个产品的发展规律都是:向着人更加容易使用.功能越来越强大的方向发展. 那么,我们的计算机 ...

  10. Python入门 —— 01简介

    Python 历史 python 的创始人为荷兰人吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为 ...