前言

MyBatis是一个优秀的持久层框架。原生的jdbc操作存在大量的重复性代码(如注册驱动,创建连接,创建statement,结果集检测等)。框架的作用就是把这些繁琐的代码封装。

MyBatis通过XML或者注解的方式将要执行的sql语句配置起来,并通过java对象和sql语句映射成最终执行的sql语句。最终由MyBatis框架执行sql,并将结果映射成java对象并返回。

正文

准备jar包

  • mybatis-3.4.6.jar
  • mysql-connector-java-5.1.47.jar

mysql数据库为firstdb,表名为xtb,表结构如下

1.新建java project MybatisPro ,项目结构图:

一共五个文件

在src下新建com.domain包,在新建User.java

package com.domain;

public class User {
private Integer user_id;
private String user_name;
private String user_sex;
private String user_phone; public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_sex=" + user_sex + ", user_phone="
+ user_phone + "]";
} public String getUser_phone() {
return user_phone;
} public void setUser_phone(String user_phone) {
this.user_phone = user_phone;
} public String getUser_sex() {
return user_sex;
} public void setUser_sex(String user_sex) {
this.user_sex = user_sex;
} public String getUser_name() {
return user_name;
} public void setUser_name(String user_name) {
this.user_name = user_name;
} public Integer getUser_id() {
return user_id;
} public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
}

在src下新建com.Dao包,然后新建Interface文件,UserMapper.java

package com.Dao;

import com.domain.*;

public interface UserMapper {
public User findUserById(int id) throws Exception; public void insertUser(User user) throws Exception;
}

在src下新建全局配置文件SqlMapConfig.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/firstdb"/><!--用自己的数据库名字 -->
<property name="username" value="root"/> <!-- 用自己的用户名密码 -->
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/> <!-- 这里配置映射文件 -->
</mappers>
</configuration>

新建映射配置文件UserMpper.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属性,不然会报错,可看做包名-->
<mapper namespace="com.Dao.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.domain.User">
select * from xtb where user_id = #{id}
</select>
<insert id="insertUser" parameterType="com.domain.User">
insert into xtb(user_name,user_sex,user_phone) values(#{user_name},#{user_sex},#{user_phone})
</insert>
</mapper>

最后,新建测试类Test.java

package com.test;

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 com.Dao.UserMapper;
import com.domain.User; public class Test{
public static void main(String[] args) throws Exception {
testInsertUser();
SelectByid(); } public static void SelectByid() throws Exception{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = factory.openSession();
//---------------
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.findUserById(2);
System.out.println(user);
//--------------
session.close(); } public static void testInsertUser() throws Exception{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = factory.openSession();
//---------------------
User user = new User();
user.setUser_name("lalala");
user.setUser_sex("women");
user.setUser_phone("0123345"); UserMapper mapper = session.getMapper(UserMapper.class);
mapper.insertUser(user);
session.commit();
//----------------------
session.close();
}
}

运行程序,查看结果:

常见错误解决:

基本上都是UserMapper.xml和接口UserMap.java的对应关系没有配置好,我把UserMapper.xml和UserMap.java拼在一起可以看下自己的配置是否正确:

简单来说就是:接口的包名,类名,参数,返回值分别对应着映射文件的namespace,id,parameterType,resultType。

总结原理:

mybais运用了代理技术,实例化出接口UserMapper的实例,然后通过根据配置文件调用sql.

具体流程:

1.读取配置文件SqlMapConfig.xml   获取连数据库的相关信息

2.有了这些信息就能创建SqlSessionFactory

3.SqlSessionFactory建立SqlSession

4.SqlSession 通过代理创建出UserMapper接口的实例,并从userMapper.xml中读取信息

5.通过userMapper.xml中的信息,执行sql语句

6.返回结果,关闭session

Mybatis 框架搭建实例的更多相关文章

  1. Mybatis框架搭建

    Mybatis框架搭建 思路: 搭建环境 导入Mybatis 编写代码 测试 一.搭建环境 创建数据库 /* Navicat Premium Data Transfer​ Source Server ...

  2. mybatis框架搭建学习初步

    mybatis框架搭建步骤:1. 拷贝jar到lib目录下,而且添加到工程中2. 创建mybatis-config.xml文件,配置数据库连接信息 <environments default=& ...

  3. SpringMVC+Mybatis框架搭建

    一.新建javaweb项目,并建好相应的包结构 二.添加项目jar到lib目录下 三.在config包中新建配置文件 sping-mvc.xml,内容如下: <?xml version=&quo ...

  4. Hibernate框架搭建实例

    一,Hibernate是一个持久层,是一个专门负责管理数据库连接的框架: 二,Hibernate的搭建实例: 1.在Hibernate的官方网站(http://www.hibernate.org)可以 ...

  5. Wcf+EF框架搭建实例

    一.最近在使用Wcf创建数据服务,但是在和EF框架搭建数据访问时遇到了许多问题 下面是目前整理的基本框架代码,经供参考使用,源代码地址:http://git.oschina.net/tiama3798 ...

  6. SSM(Spring +SpringMVC + Mybatis)框架搭建

    SSM(Spring +SpringMVC + Mybatis)框架的搭建 最近通过学习别人博客发表的SSM搭建Demo,尝试去搭建一个简单的SSMDemo---实现的功能是对用户增删改查的操作 参考 ...

  7. spring+springmvc+mybatis框架搭建

    一.开发前准备 1)ecplise4.11.0 百度网盘:https://pan.baidu.com/s/1wO9_I52lp0mYNeNTdnj80w 提取码:booa 2)jdk1.6.0_45  ...

  8. 【SSM 6】Spring+SpringMVC+Mybatis框架搭建步骤

    一.整体概览 首先看maven工程的创建 二.各层的文件配置 2.1,SSM父工程 <span style="font-family:KaiTi_GB2312;font-size:18 ...

  9. sonne_game网站开发02spring+mybatis框架搭建

    从最开始搭框架谈起,而且,我不仅仅会讲how,还会努力讲why.因为对于web开发,由于有太多好的框架.组件.工具,使得how往往不是那么深刻,背后的why更值得专研.如果有初学者关注我这个系列,也一 ...

随机推荐

  1. java.net.UnknownHostException 异常处理(转)

    在linux系统下部署Java产品的集群环境时,后台报出如下异常,系统报找不到名为“QATest242”的主机: ERROR  - Get local host name failed -com.tr ...

  2. leetcode-92-反转链表②

    题目描述: 方法一: class Solution: def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: ...

  3. vagrant网站中box下载方法

    假设需要下载Laravel/homestead这个包. 首先定位到地址:https://app.vagrantup.com/laravel/boxes/homestead/versions/8.0.0 ...

  4. linux mysql备份shell

    #!/bin/bash # Shell script to backup MySql database # Author: Henry he # Last updated: -- # crontab ...

  5. 菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t[转]

    菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blo ...

  6. 菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t[转]

    菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...

  7. 基础类型转化成String 转

    基础类型转化成String 在程序中你可能时常会需要将别的类型转化成String,有时候可能是一些基础类型的值.在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值 ...

  8. C# GDI+编程(二)

    常用的绘图函数 DrawArc绘制一个弧形 示例:graphics.DrawArc(pen,,,,,,) 倒数第二个参数,表示起始度数,最后一个参数是弧形的跨越度数.比如起始度数是90,跨越度数是12 ...

  9. Qt源码下载

    这是官方下载地址:http://qt.nokia.com/downloads 点击右下角的 ftp.qt.nokia.com - Archive You can find our archive of ...

  10. vs 快捷键 (空格显示 绿点, Tab 显示箭头)

    VS 快捷键 (空格显示 绿点, Tab 显示箭头)   VS 有用的快捷键 : Ctrl + r, ctrl + w, 切换空格示.