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. ASP.NET MVC模型绑定1

    一.模型绑定原理 模型绑定是指为Controller的Action方法的参数提供值的过程,例如我有一个名为Blog的实体类(准确的说是ViewModel),它有一个名为Title的属性,如果我在VIE ...

  2. davinci入门必读

    http://www.usr.cc/forum.php/static/image/smiley/tiger/archiver/forum.php?mod=viewthread&action=p ...

  3. [HNOI2017] 礼物 - 多项式乘法FFT

    题意:给定两个 \(n\) 元环,环上每个点有权值,分别为 \(x_i, y_i\).定义两个环的差值为 \[\sum_{i=0}^{n-1}{(x_i-y_i)^2}\] 可以旋转其中的一个环,或者 ...

  4. SpringMVC请求乱码问题

    今天做一个项目实现插入数据的功能,最开始没有添加FilterEncoding处理字符集乱码了,那是正常的,后来我添加过之后依然还是乱码,让我 百思不得其解,代码配置如下: EncodingFilter ...

  5. Oracle 12.2.0.1 Installation Fails With "PRVG-0449"

    Mac 电脑虚拟机 Parallels 中进行Oracle 12.2.0.1 数据库软件安装时,预环境检查过程中,提示堆栈大小限制[失败],即使修复问题依然如故. Oracle 12.2.0.1 In ...

  6. 使用tableExport.js直接导出web页面上的table

    1,需要导入两个js文件,一个tableExport.js,另一个是jquery.base64.js,前一个文件是导出数据和核心类库,后一个是为了避免导出中文时乱码的js文件,如果你导出的数据没有中文 ...

  7. mybatis-plus 错误

    错误:java.lang.NoClassDefFoundError: org/apache/velocity/context/Context 原因: 缺少velocity的依赖 解决方案: <d ...

  8. python面试的100题(4)

    4.打乱一个排好序的list对象alist? import random alist = [1,2,3,4,5] random.shuffle(alist) print(alist) 结果为:[2, ...

  9. Python与C语言基础对比(Python快速入门)

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...

  10. PHP随机生成名字 电话号码

    封装函数 随机生成电话号码 function generate_name($count,$type="array",$white_space=false) {$arr = arra ...