1、mybatis的优点

mybatis:半自动化持久化框架

  • sql(专注数据)和java编码(专注业务)分离
  • 可使用简单的xml或者注解用于配置和原始映射
  • 将接口和java中的pojo映射成数据库中的记录
  • 可以理解为:业务代码+底层数据库的媒介

2、创建mybatis的步骤(一)---配置

  1. 创建数据库、建表
  2. 搭建开发环境
  3. 导入jar包  

    log4j-1.2.17.jar

    mybatis-3.4.1.jar

    mysql-connector-java-5.1.7-bin.jar

  4. 添加配置文件

    mybatis-config.xml

  5. log4j.properties配置文件(建议加上)
    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    最终结构可参照下方图片:

3、创建mybatis的步骤(二)---代码

①创建pojo对象User

public class User {
private int id;
private String lastName;
private int sex;
}

②在src目录创建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 数据源
POOLED 表示使用数据库连接池
-->
<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="root" /> (数据库密码)
</dataSource>
</environment>
</environments>
<!-- 引入sql语句对应的配置文件 -->
<mappers>
<mapper resource="com/atguigu/pojo/UserMapper.xml" /> (根据自己UserMapper.xml的位置更改路径,也可以写成通用的包名)
</mappers>
</configuration>

③创建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">
      <!-- 注释
     namespace 属性一般情况下。
      一种定义规则:
       ①使用对流的javaBean的全类名
      ②使用Mapper接口的全类名
       -->
<mapper namespace="com.atguigu.pojo.User"> (此处写全类名)
<!-- 此处写相应的SQL语句 增删改查 -->
</mapper>

④配置mybatis配置文件的提示:

Config 文件的 key: http://mybatis.org/dtd/mybatis-3-config.dtd

mapper文件的key: http://mybatis.org/dtd/mybatis-3-mapper.dtd

  • 搜索xml  --双击子文件 XML Catalog
  • add--进行添加
  • key--输入对应的Configuration和mapper的约束条件(dtd文件)
  • URI---一定要选择URI
  • File System  选择本地对应的文件添加

可以按照图中的结构进行建包,进行编码测试

⑤创建UserMapper接口

public interface UserMapper {
/*
* 1、根据编号查询用户信息
* 2、查询所有用户信息
* 3、添加用户信息
* 4、删除用户信息
* 5、更新用户信息
*/
public User findUserById(int id); public List<User> allFindUser(); public int saveUser(User user); public int updateUser(User user); public int deleteUser(int id);
}

⑥创建UserMapperTest类

import java.io.IOException;
import java.sql.Connection;
import java.util.List;
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.Before;
import org.junit.Test;
import com.atguigu.mapper.UserMapper;
import com.atguigu.pojo.User;
(此处是通用代码)
@SuppressWarnings("unused")
public class UserMapperTest {
private SqlSessionFactory factory;
@Before
public void before(){
try {
factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
} @Test
//根据id查找
public void testFindUserById() {
/*
* 1.factory创建session
* 2.session通过代理模式 创建Mapper的实体类
* 3、mapper实体类执行方法 并获取返回值
* 4、输出内容
* 5、关流
*/
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.findUserById(1);
System.out.println(user);
session.close();
} @Test
//查找所有
public void testAllFindUser() {
/*
* 1.factory创建session
* 2.session通过代理模式 创建Mapper的实体类
* 3、mapper实体类执行方法 并获取返回值
* 4、输出内容
* 5、关流
*/
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> list = userMapper.allFindUser();
System.out.println(list);
session.close();
} @Test
//添加
public void testAddUser(){
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
int saveUser = userMapper.saveUser(new User(1,"冷清秋",1));
session.commit(); (需要进行提交,||不提交的结果:运行成功,但数据库无值)
System.out.println(saveUser);
session.close();
} @Test
//修改
public void testUpdateUser(){
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
int updateUser = userMapper.updateUser(new User(1,"zhangsan",0));
session.commit();
System.out.println(updateUser);
session.close();
} @Test
//删除
public void deleteUser() {
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
int deleteUser = userMapper.deleteUser(12);
session.commit();
System.out.println(deleteUser);
session.close();
}
}

⑦对应的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.atguigu.mapper.UserMapper">
<!--
namespace:名称空间(自定义名字)
id:唯一标识
resultType:返回值类型(写返回值类型的全类名)
#{id}:从传递过来的参数中取出id值
-->
<!-- public User findUserById(int id); -->
<select id="findUserById" resultType="cn.aynu.pojo.User">
select* from user where id = #{id}
</select> <!-- public List<User> allFindUser(); -->
<select id="allFindUser" resultType="cn.aynu.pojo.User">
select id,name,sex from user
</select> <insert id="saveUser" parameterType="cn.aynu.pojo.User">
insert into user(name,sex) values(#{name},#{sex})
</insert> <update id="updateUser">
update user set name = #{name},sex=#{sex} where id = #{id}
</update> <delete id="deleteUser">
delete from user where id = #{id}
</delete>
</mapper>

敲小黑板:

1、当返回值是void的时候,resultType可以省略不写

2、当数据是基本数据类型的时候,resulttype可以省略不写

但是建议全部都加上,代码更规范,别人看之后通俗易懂,id和resultType一一对应

***不加resultType的错误***

mybatis-01-简单概述基础点的更多相关文章

  1. MyBatis 01 概述

    官网 http://www.mybatis.org/mybatis-3/zh/index.html GitHub https://github.com/mybatis/mybatis-3 简介 MyB ...

  2. Java多线程| 01 | 线程概述

    Java多线程| 01 | 线程概述 线程相关概念 进程与线程 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位.可以把进程简单的理解 ...

  3. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  4. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

  5. [转载]SharePoint 2013搜索学习笔记之搜索构架简单概述

    Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...

  6. SNMP学习笔记之SNMP简单概述

    0x00 SNMP简单概述 0.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理 ...

  7. Mybatis框架简单使用

    Mybatis框架简单使用 环境搭建 新建一个JavaWeb项目,在web\WEB-INF\创建lib文件,并且在其下添加Mybatis的核心包以及依赖包,以及Mysql驱动包,junit4测试包等. ...

  8. MyBatis(1)-简单入门

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

  9. MyBatis 使用简单的 XML或注解用于配置和原始映射

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .My ...

  10. SNMP简单概述

    一.SNMP简单概述 1.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议& ...

随机推荐

  1. 腾讯短链接url生成接口/腾讯短网址在线生成/新浪微博短链接生成器的分享

    在通常情况下,URL是由系统生成的,通常包括URI路径,多个查询参数,可以对参数进行加密和解密. 当人们要分享某个URL,比如短信,邮件,社交媒体,这就需要短URL.而短网址,顾名思义就是在长度上比较 ...

  2. docker-部署zabbix4

    一.安装docker环境 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 设置yum源 yum-config-mana ...

  3. Codeforces Round #621 (Div. 1 + Div. 2)E(二分查找,枚举分界点,容斥原理)

    可以把每头牛看作一个位置,有几对牛可以放置相当于有几对位置可以给它睡觉,没有牛可以在其他牛的位置睡觉,所以有几对牛放置的可能答案就乘多少(相当于在原本的两个集合里分别插入一个元素,元素代表它睡觉的位置 ...

  4. 记录 shell学习过程(8)函数

    start () { echo "Apache start ...... [OK]" #return 0 可以写一个返回值,比如执行成功返回 0 } stop () { echo ...

  5. 【Python】time库

  6. Paper: ModelarDB

    Problem: how to store and querry massive amounts of high quality sensor data ingested in real-time f ...

  7. LitElement(五)事件

    1.概述 1.1 在何处添加事件监听器 您需要以一种可以在事件发生之前触发的方法添加事件监听器.但是,为了获得最佳的加载性能,应尽可能晚添加事件监听器. 你可以在以下位置添加事件监听器: 1.1.1  ...

  8. thinkphp 二级域名绑定模块,导致设置的路由被多域名共用的问题解决方案

    问题背景: 在router.php路由配置文件设置了二级域名和路由设置 use think\Route; Route::domain('www','index'); Route::domain('ad ...

  9. vs2019 scanf 解决 C4996问题

    1. 首先选择项目 2. 然后选择最下面那行的 工程属性, 其后于此处 3. 添加上 :_CRT_SECURE_NO_WARNINGS 最后保存,使用 scanf 读取即无报错了

  10. 松软科技web教程:JavaScript HTML DOM 事件监听器

    addEventListener() 方法 实例 添加当用户点击按钮时触发的事件监听器: document.getElementById("myBtn").addEventList ...