mybatis 是一款支持定制化 sql、存储过程以及高级映射的轻量级半自动 orm 框架。它不仅仅可以与mysql一起用,pg也可以。
官方文档:mybatis 3 | introduction – mybatis
想要了解更多可以去官网看看,里面有中文版。
一、开发步骤
1. 添加mybatis坐标
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelversion>4.0.0</modelversion>
<groupid>com.itheima</groupid>
<artifactid>ithiema_mybatis_quick</artifactid>
<packaging>war</packaging>
<version>1.0-snapshot</version>
<name>ithiema_mybatis_quick maven webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupid>com.mchange</groupid>
<artifactid>c3p0</artifactid>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
<version>8.0.28</version>
</dependency>
<dependency>
<groupid>com.alibaba</groupid>
<artifactid>druid</artifactid>
<version>1.1.21</version>
</dependency>
<dependency>
<groupid>org.junit.jupiter</groupid>
<artifactid>junit-jupiter</artifactid>
<version>release</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-context</artifactid>
<version>6.1.2</version>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-test</artifactid>
<version>5.3.12</version>
</dependency>
<dependency>
<groupid>javax.servlet</groupid>
<artifactid>javax.servlet-api</artifactid>
<version>4.0.1</version>
</dependency>
<dependency>
<groupid>javax.servlet.jsp</groupid>
<artifactid>javax.servlet.jsp-api</artifactid>
<version>2.3.3</version>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-web</artifactid>
<version>6.1.2</version>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-webmvc</artifactid>
<version>6.1.2</version>
</dependency>
<dependency>
<groupid>log4j</groupid>
<artifactid>log4j</artifactid>
<version>1.2.17</version>
</dependency>
<dependency>
<groupid>org.mybatis</groupid>
<artifactid>mybatis</artifactid>
<version>3.5.9</version>
</dependency>
</dependencies>
<build>
<finalname>ithiema_mybatis_quick</finalname>
</build>
</project>2.创建user链接
3.编写user实体类
package com.itheima.domain;
public class user {
private int id;
private string username;
private string password;
public int getid() {
return id;
}
public void setid(int id) {
this.id = id;
}
public string getusername() {
return username;
}
public void setusername(string username) {
this.username = username;
}
public string getpassword() {
return password;
}
public void setpassword(string password) {
this.password = password;
}
@override
public string tostring() {
return "user{" +
"id=" + id +
", name='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}4.编写映射文件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">
<!--为什么要给命名空间?当前这个usermapper。xml还会写很多sql语句,调用时候,使用命名空间点方法id-->
<mapper namespace="usermapper">
<select id="findall" resulttype="com.itheima.domain.user">
select * from user
</select>
</mapper>5.编写核心文件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"></transactionmanager>
<datasource type="pooled">
<property name="driver" value="com.mysql.cj.jdbc.driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/dbstudy?servertimezone=asia/shanghai&usessl=false"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</datasource>
</environment>
</environments>
<!-- 加载映射文件-->
<mappers>
<mapper resource="com.itheima.mapper/usermapper.xml"></mapper>
</mappers>
</configuration>6.编写测试类
import com.itheima.domain.user;
import org.apache.ibatis.session.sqlsession;
import org.apache.ibatis.session.sqlsessionfactory;
import org.apache.ibatis.session.sqlsessionfactorybuilder;
import org.junit.jupiter.api.test;
import org.apache.ibatis.io.resources;
import java.io.inputstream;
import java.util.list;
public class mybatistest {
@test
public void test1()throws exception{
// 获得核心配置文件
inputstream resourceasstream = resources.getresourceasstream("sqlmapconfig.xml");
//2.获得sqlsession工厂对象
sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(resourceasstream);
//3.获得sqlsession回话对象
sqlsession sqlsession = sqlsessionfactory.opensession();
//4.执行sql语句 参数:namespace+id
list<user> userlist = sqlsession.selectlist("usermapper.findall");
//5.打印结果
system.out.println(userlist);
//6.释放资源
sqlsession.close();
}
}二、映射文件概述

三、增删改查操作
3.1 增加
<!--为什么要给命名空间?当前这个usermapper。xml还会写很多sql语句,调用时候,使用命名空间点方法id-->
<mapper namespace="usermapper">
<insert id="save" parametertype="com.itheima.domain.user">
insert into user values(#{id},#{username},#{password})
</insert>
</mapper>import com.itheima.domain.user;
import org.apache.ibatis.session.sqlsession;
import org.apache.ibatis.session.sqlsessionfactory;
import org.apache.ibatis.session.sqlsessionfactorybuilder;
import org.junit.jupiter.api.test;
import org.apache.ibatis.io.resources;
import java.io.inputstream;
import java.util.list;
public class mybatistest {
@test
public void test1()throws exception{
user user = new user();
user.setusername("tom");
user.setpassword("123456");
// 获得核心配置文件
inputstream resourceasstream = resources.getresourceasstream("sqlmapconfig.xml");
//2.获得sqlsession工厂对象
sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(resourceasstream);
//3.获得sqlsession回话对象
sqlsession sqlsession = sqlsessionfactory.opensession();
//4.执行sql语句 参数:namespace+id
sqlsession.insert("usermapper.save",user);
// mybatis的事务默认是不进行提交的
sqlsession.commit();
//6.释放资源
sqlsession.close();
}
}
3.2 修改
<!--为什么要给命名空间?当前这个usermapper。xml还会写很多sql语句,调用时候,使用命名空间点方法id-->
<mapper namespace="usermapper">
<update id="update" parametertype="com.itheima.domain.user">
update user set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>import com.itheima.domain.user;
import org.apache.ibatis.session.sqlsession;
import org.apache.ibatis.session.sqlsessionfactory;
import org.apache.ibatis.session.sqlsessionfactorybuilder;
import org.junit.jupiter.api.test;
import org.apache.ibatis.io.resources;
import java.io.inputstream;
import java.util.list;
public class mybatistest {
@test
public void test1()throws exception{
// 修改
user user = new user();
user.setid(5);
user.setusername("lucy");
user.setpassword("123456");
//获得核心配置文件
inputstream resourceasstream = resources.getresourceasstream("sqlmapconfig.xml");
//2.获得sqlsession工厂对象
sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(resourceasstream);
//3.获得sqlsession回话对象
sqlsession sqlsession = sqlsessionfactory.opensession();
//4.执行sql语句 参数:namespace+id
sqlsession.update("usermapper.update",user);
// mybatis的事务默认是不进行提交的
sqlsession.commit();
//6.释放资源
sqlsession.close();
}
}3.3删除
// 删除
//获得核心配置文件
inputstream resourceasstream = resources.getresourceasstream("sqlmapconfig.xml");
//2.获得sqlsession工厂对象
sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder().build(resourceasstream);
//3.获得sqlsession回话对象
sqlsession sqlsession = sqlsessionfactory.opensession();
//4.执行sql语句 参数:namespace+id
sqlsession.delete("usermapper.delete",1);
// mybatis的事务默认是不进行提交的
sqlsession.commit();
//6.释放资源
sqlsession.close();<!--为什么要给命名空间?当前这个usermapper。xml还会写很多sql语句,调用时候,使用命名空间点方法id-->
<mapper namespace="usermapper">
<delete id="delete" parametertype="java.lang.integer">
delete from user where id=#{id}
</delete>
</mapper>
3.4 小结

四、mybatis核心配置文件

objectfactory、databaseldprovider非重点
4.1 数据源环境
4.1.1 environment


unpooled: 最原始的jdbc,需要时候创建用完销毁。
managed\jndi很少用到。
4.1.2 mapper

后三种作为了解
4.1.3 properties

4.1.4 typealiases


注意:标签放置有顺序要求

五、mybatis的相应api




到此这篇关于mybatis框架快速入门超详细教程的文章就介绍到这了,更多相关mybatis快速入门内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论