目录
前言
一、Mybatis是什么?
二、使用步骤
在这里项目我就不创建了,想了解如何创建maven请去idea创建maven中的servlet并运行_篆愁君的烦恼的博客-CSDN博客
1、在pom.xml中添加配置
2、删除web.xml中用不到的
3、在resources下面创建mybatis-config.xml文件
4、创建实体类
5、创建map映射
在安装好之后,会有一些特殊效果,这里还需要下一个步骤
6、创建映射的xml
1、在usermapping.xml中生成
2、在interface中直接使用
7、创建运行的类
1.获取SqlSessionFactory
2、获取SqlSession对象
3、获取map映射
4、 关闭资源
总结
前言
对于Mybatis也是简单的学了一阵子了,现在来总结下Mybatis在项目中的简单使用(为了便于理解我这里只举一个简单的例子)
一、Mybatis是什么?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录(网上复制)
如果真的感兴趣可以前往mybatis – MyBatis 3 | 简介
二、使用步骤
在这里项目我就不创建了,想了解如何创建maven请去idea创建maven中的servlet并运行_篆愁君的烦恼的博客-CSDN博客
1、在pom.xml中添加配置
在 之间添加
mysql
mysql-connector-java
8.0.29
org.mybatis
mybatis
3.5.10
这两个,第一个是连接数据库的,一个是mybatis
2、删除web.xml中用不到的
初学者的话,基本上都用不到,功能不会有太大的差别
在这里项目我就不创建了,想了解如何创建maven请去idea创建maven中的servlet并运行_篆愁君的烦恼的博客-CSDN博客
在
之间添加
mysql mysql-connector-java8.0.29 org.mybatis mybatis3.5.10
这两个,第一个是连接数据库的,一个是mybatis
2、删除web.xml中用不到的
初学者的话,基本上都用不到,功能不会有太大的差别
初学者的话,基本上都用不到,功能不会有太大的差别
保留头尾就可以了
3、在resources下面创建mybatis-config.xml文件
这个是官网给我们的大致文件,根据自己的情况,将${driver}等,mapper映射改一下就可以用
下面是我按我的弄好的
4、创建实体类
这里根据自己创建的数据库表来创建,实体类属性最好和表名相同,不同的话,需要在后面创建的xml中修改
这个是官网给我们的大致文件,根据自己的情况,将${driver}等,mapper映射改一下就可以用
下面是我按我的弄好的
这里根据自己创建的数据库表来创建,实体类属性最好和表名相同,不同的话,需要在后面创建的xml中修改
package com.izaijia.beans;
public class User {
private int id;
private String name;
private String sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + ''' +
", sex='" + sex + ''' +
'}';
}
}
5、创建map映射
创建一个interface
建议把实体和映射放到两个包里
创建一个interface
建议把实体和映射放到两个包里
idea插件商城里面有一个比较方便的Mybatis插件
点击 文件=》设置=》插件
在安装好之后,会有一些特殊效果,这里还需要下一个步骤
6、创建映射的xml
这个在resource里面创建,直接创建一个与上面的interface同名包内
这里我的interface是在com.izaijia.mapping内
所以我在创建xml时,创建的是com/izaijia/mapping/usermapping.xml
这个在resource里面创建,直接创建一个与上面的interface同名包内
这里我的interface是在com.izaijia.mapping内
所以我在创建xml时,创建的是com/izaijia/mapping/usermapping.xml
创建成功后就是上面这个样子
下面这个是从整体看,那个MybatisDemo是一个运行类,到后面我会讲到
官网的文件内容是下面这个
select * from Blog where id = #{id}
将namespace改成映射的interface就好,id是方法名,returnType是返回值类型。
可以直接把它给的select删了
有两种方法
1、在usermapping.xml中生成
你可以直接在interface内写想要的方法
然后在方法后面点击alt+Enter
可以直接在xml内生成相应的代码,不过具体的还是要自己写
下面是自动生成的
修改一下,加上查询语句
你可以直接在interface内写想要的方法
然后在方法后面点击alt+Enter
可以直接在xml内生成相应的代码,不过具体的还是要自己写
修改一下,加上查询语句
下面是带有条件的
User getByIdUser(int id);
2、在interface中直接使用
这种的话,适合比较简单的sql语句,类似下面的
这种的话,适合比较简单的sql语句,类似下面的
@Select("select * from user where id=#{id}")
User selectById(int id);
通过注解解决,类似还有@Insert,@Update,@Delete等,当然,上一种方法和这个差不多,也有
等标签
另外,对于实体类属性和数据库表内属性名不同的情况,有下面这种方法解决
但同时,之前的代码下面这个
修改成下面这种形式
7、创建运行的类
我们这里只是简单举例,就不写各种service,dao,imp的类了,就简单写一个运行类
1.获取SqlSessionFactory
根据 官网的提示,我们找到下面这个
我们这里只是简单举例,就不写各种service,dao,imp的类了,就简单写一个运行类
根据 官网的提示,我们找到下面这个
String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
明显这个‘resource’就是我们的mybatis-config.xml文件,因为我们写到了resources里,且并没有放到包里(这个视你自己的情况),所以直接引用,改成下面这个
String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
接下来 可以获取SqlSession
2、获取SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
3、获取map映射
UserMapping mapper = sqlSession.getMapper(UserMapping.class);
这个UserMapping就是咱创建的那个interface
创建好映射之后就可以直接用方法了
// 执行方法
User user = mapper.selectById(1);
System.out.println(user);
UserMapping mapper = sqlSession.getMapper(UserMapping.class);
这个UserMapping就是咱创建的那个interface
创建好映射之后就可以直接用方法了
// 执行方法
User user = mapper.selectById(1);
System.out.println(user);
4、 关闭资源
sqlSession.close();
总结
Mybatis的简单应用并不难,但是深入却不简单,希望一起努力,mybatis的官网是mybatis – MyBatis 3 | 简介
想要进一步学习的可以去看看
另外,注意map映射xml的生成,是要与interface同包的,在resource生成,且是直接写成类似
com/izaijia/mapping/usermapping.xml
最后我把所有的代码再写一遍,如果有想要试试的,可以在这里复制一下
1、pom.xml
4.0.0 war ex com.izaijia ex1.0-SNAPSHOT org.mortbay.jetty maven-jetty-plugin6.1.7 8888 30000 ${project.build.directory}/${pom.artifactId}-${pom.version} / mysql mysql-connector-java8.0.29 org.mybatis mybatis3.5.10
2、web.xml
3、mybatis.xml
4、User.java(实体类)
package com.izaijia.beans;
public class User {
private int id;
private String name;
private String sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + ''' +
", sex='" + sex + ''' +
'}';
}
}
5、UserMapping.java
package com.izaijia.mapping;
import com.izaijia.beans.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface UserMapping {
User getByIdUser(int id);
List selectAll();
@Select("select * from user where id=#{id}")
User selectById(int id);
}
6、usermapping.xml
7、MysbatisDemo.java
import com.izaijia.beans.User;
import com.izaijia.mapping.UserMapping;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisDemo {
//Driver
public static void main(String[] args) {
//1获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 2获取SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
// 3获取map映射
UserMapping mapper = sqlSession.getMapper(UserMapping.class);
// 执行方法
User user = mapper.selectById(1);
System.out.println(user);
// 4关闭资源
sqlSession.close();
}
}
8、数据库
CREATE DATABASE IF NOT EXISTS `mybatis` ; USE `mybatis`; -- MySQL dump 10.13 Distrib 8.0.29, for Win64 (x86_64) -- -- Host: 127.0.0.1 Database: mybatis -- ------------------------------------------------------ -- Server version 8.0.29 ; ; ; ; ; ; ; ; ; ; -- -- Table structure for table `user` -- DROP TABLE IF EXISTS `user`; ; ; CREATE TABLE `user` ( `id` int NOT NULL, `name` varchar(45) DEFAULT NULL, `sex` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; ; -- -- Dumping data for table `user` -- LOCK TABLES `user` WRITE; ; INSERT INTO `user` VALUES (1,'张三','男'),(2,'李四','女'),(3,'王五','男'),(4,'赵六','女'),(5,'钱七','男'); ; UNLOCK TABLES; ; ; ; ; ; ; ; ; -- Dump completed on 2022-07-12 19:19:43
最后这个是自动导出的,只看不注释的就行
就到这里吧



