前言

  之前一直有直接使用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. 我上线的android版app

    把自己开发的几个小的app上线了,在自己的博客中推广一下吧: 聊天兔子: 下载地址:http://android.myapp.com/myapp/detail.htm?apkName=com.fuly ...

  2. bzoj5152 [Wc2018]通道

    题目链接 正解:不会做. 写一个爬山算法就过官方数据了(逃 具体来说就是每次随机一个根,然后迭代找最长路的那个点. 多随机几次取$max$就行了.正解以后再补.. #include <bits/ ...

  3. Kali-linux攻击WordPress和其他应用程序

    今天越来越多的企业利用SAAS(Software as a Service)工具应用在他们的业务中.例如,他们经常使用WordPress作为他们网站的内容管理系统,或者在局域网中使用Drupal框架. ...

  4. Entity Framework——执行sql语句

    EF版本:6.0.0 EF对大量数据或多表连接一次操作耗时较大,或要求响应时间尽可能小,因此采用EF框架执行SQL语句的方案 1DbContext.Database 这个类包含了大量的操作方法,见截图 ...

  5. java使用类序列化反序列化(读写文件)

    创建类:Role package com.wbg.springRedis.entity; import java.io.Serializable; public class Role implemen ...

  6. 浅谈DB2在线分析处理函数

    最近碰到一个测试需求,使用到了在线分析处理(OLAP),现总结记录一下,也希望能帮到有相关问题的朋友. 1. 测试环境是DB2,通过ETL(数据抽取,数据转换,数据加载)技术将数据源数据加载到目标数据 ...

  7. EF Core 2.1 中的 Eager loading、Explicit loading和LazyLoading (转自MSDN)

    Entity Framework Core allows you to use the navigation properties in your model to load related enti ...

  8. CSS权重的比较方法

    CSS的权重如下: !important  Infinity正无穷 行间样式  1000 id     100 class|属性|唯类 10 标签|伪元素  1 通配符   0 256进制 当出现多个 ...

  9. 启动tomcat的时候为啥你启动的是8,启动起来的确实其他的Tomcat

    如果发现,是启动tomcat的时候为啥你启动的是8,启动起来的确实其他的Tomcat ,你可以去看看你的环境变量,是不是配了一个tomcat,

  10. DQL-分组查询

    一.语法   select 分组函数,分组后的字段   from 表 [ where 筛选条件]   group by 分组的字段[having 分组后的筛选][order by 排序列表] 例如 S ...