欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MyBatis简单入门

程序员文章站 2023-04-06 10:52:30
1.MyBatis架构(简单介绍MyBatis的流程) 接下来简单介绍一下这张图:首先明确我们的目的就是要创建sqlsession然后利用这个对象去执行sql 完成CRUD。创建sqlsession的前提就是用session工厂去创建,利用工厂创建需要原材料啊,所以最顶端的MyBatis配置文件就是 ......

1.mybatis架构(简单介绍mybatis的流程)

  

MyBatis简单入门

接下来简单介绍一下这张图:首先明确我们的目的就是要创建sqlsession然后利用这个对象去执行sql 完成crud。创建sqlsession的前提就是用session工厂去创建,利用工厂创建需要原材料啊,所以最顶端的mybatis配置文件就是所需要的原材料。至于最下面的exector(执行者)就是sqlsession中的对象,具体是由它去执行sql语句,而mappedstatement对象再executor中是一个存sql的对象,它把sql给exectuor(执行者),执行者去执行。由于写的sql肯定有占位符啊,所以最左边的输入映射就是去替换里面的占位符。执行完sql,比如查询,必然会返回结果,那么输出映射就是把结果返回来

2.mybatis下载

mybaits的代码由github.com管理

下载地址:https://github.com/mybatis/mybatis-3/releases

 

3.项目

  3.1 环境搭建

 3.11 创建一个java project

MyBatis简单入门

    

 3.12 导包

  首先在project创建一个lib文件夹

MyBatis简单入门

  把下载好的mybatis中的jar包和lib目录下的jar包复制到lib文件夹下

 MyBatis简单入门

MyBatis简单入门

 

 MyBatis简单入门

这里涉及到数据库 本人使用的是mysql 所以 把连接mysql的jar也导入,大家可以自己百度下载jar包

MyBatis简单入门

 bulid to path

MyBatis简单入门

 

  3.12 开始入门

  首先在数据库中创建一张表 这里我起名为user  并加点数据

  MyBatis简单入门

  

  在项目中创建user的pojo对象 

 

MyBatis简单入门

 

package com.dy;

import java.util.date;

public class user {
	private integer id;
	private string username;
	private string sex;
	private date birthday;
	private string address;

	public user() {
		super();
	}

	public user(integer id, string username, string sex, date birthday, string address) {
		super();
		this.id = id;
		this.username = username;
		this.sex = sex;
		this.birthday = birthday;
		this.address = address;
	}

	public integer getid() {
		return id;
	}

	public void setid(integer id) {
		this.id = id;
	}

	public string getusername() {
		return username;
	}

	public void setusername(string username) {
		this.username = username;
	}

	public string getsex() {
		return sex;
	}

	public void setsex(string sex) {
		this.sex = sex;
	}

	public date getbirthday() {
		return birthday;
	}

	public void setbirthday(date birthday) {
		this.birthday = birthday;
	}

	public string getaddress() {
		return address;
	}

	public void setaddress(string address) {
		this.address = address;
	}

	@override
	public string tostring() {
		return "user [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
				+ address + "]";
	}
	

}

  

根据最开始的架构图 第一步就是准备我们的原材料,所以开始写我们的核心配置文件sqlmapconfig.xml,既然涉及到了数据库我们肯定要告诉mybatis使用什么数据库和连接字符串,让它可以去执行我们想要的sql。

<?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">
            <!-- 使用jdbc事务管理 -->
            <transactionmanager type="jdbc" />
            <!-- 数据库连接池 -->
            <datasource type="pooled">
                <!-- 驱动 -->
                <property name="driver" value="com.mysql.jdbc.driver" />
                <!-- 连接字符串 -->
                <property name="url"
                    value="jdbc:mysql://localhost:3306/mybatis?characterencoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="hjf" />
            </datasource>
        </environment>
    </environments>
</configuration>

还是第一张图,可以看到除了核心配置文件,下面还有个mapper.xml,这个xml文件就是我们用来写sql的地方,这样说可能比较抽象,看到代码大家应该能懂,所以我们来构建usermap.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">

由于mybatis只会加载核心配置文件,所以我们要在核心文件中配置,告诉mybatis去这个文件找sql。resource就是你的map的名字,这里是相对路径,大家可以用ctrl加左键点一下,看能不能进去,点的进应该就没写错。

MyBatis简单入门

还是回到架构图,我们准备好了原材料,就要把原材料输送给工厂,所以我们创建一个单元测试,和创建普通类一样,就是要在你写的测试方法加上@test,然后快捷键导包。

首先我们要获得原材料加载核心配置文件,有多种方法,这里就简单的用一种。

MyBatis简单入门

把材料输送给工厂,获得工厂对象

MyBatis简单入门

工厂有了材料,就可以造产品啦 

 MyBatis简单入门

了sqlsession就代表有了executor对象,那么就可以去执行sql啦执行的sql是放在之前的usermap,xml文件中,那么我们就去这个xml写sql吧,这里先写个简单的查询

 

sql是写在mapping标签下,具体怎么写可以看下面的注释

<?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表示命名空间,防止和其他的map里得id重复 -->
<mapper namespace="user">
    
    <!-- id表示这个select的名字,只能唯一,以后就是通过这个id去找到这个select和下面的sql -->
    
    <!-- #{}是占位符,里面的值可以是任意的 你可以写#{v}和这里的#{id}作用一样,我们需要告诉框架这个占位符是什么类型的,
      我这里的id是integer类型,所以parametertype="integer" --> <!-- 大家可以看到框架最右边是可以返回pojo类型的数据,所以我们配置返回的类型是user型,所以resulttype是user型,要写全类名哦 --> <select id="getuser" parametertype="integer" resulttype="com.dy.user"> select * from user where id = #{id} </select> </mapper>

写好sql后,自然是执行sql啦,因为我们只查一个所以用下面这个方法

MyBatis简单入门

还记得上面我们写了个占位符嘛,这里的1 就是去替换占位符的。执行 结果:

MyBatis简单入门

 

 同理  如果你的paramtertype是pojo类型,如下面的inseruser的select中,给入的参数是user类型,如果你的占位符中写的内容和你的类的字段相同,那么它就会默认用那个值,比如你要插入一个user,给一个user,那个user有一个username字段而且值为admin,那么你插入的时候如果写的是#{username}那么它就会用user类的username也就是admin去替换。

MyBatis简单入门