简介
什么是 MyBatis?
-
MyBatis 是一款优秀的持久层框架,
-
它支持自定义 SQL、存储过程以及高级映射。
-
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
-
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
Mybatis下载
-
mavan下载:
https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.2 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency>
新建一个项目
1.新建一个普通的maven项目
2.删除src目录
3.导入maven依赖,在pom.xml文件中插入
<!-- 导入依赖 --> <dependencies> <!--mysql依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--mybatil依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <!--junit依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
4.新建一个模块
-
编写mybatis的核心配置文件(mybatis-config.xml),在子模块的resources里面创建。
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--configuration核心配置文件--> <configuration> <typeAliases> <typeAlias type="com.soft.pojo.Admin" alias="admin"/> </typeAliases> <!-- 配置mybatis的环境--> <environments default="development"> <!-- 配置mysql的环境--> <environment id="development"> <!-- 配置事物类型--> <transactionManager type="JDBC"/> <!-- 配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test7?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--告知mybatis的映射配置--> <mappers> <mapper resource="com/soft/dao/UserMapper.xml"/><!-- 这里的地址填的是接口实现类的配置文件地址 --> </mappers> </configuration>
-
编写mybatis的工具类,在main包下面的java文件中创建一个utils包存放
package com.soft.utils; 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 MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
-
Dao接口,在main包下面的java文件中创建一个dao包存放
public interface UserDao { List<Admin> getUserList(); }
-
接口实现类,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.soft.dao.UserDao"> <select id="getUserList" resultType="返回对象的类型地址"> select * from admin; </select> </mapper>
-
创建以后pojo包,创建一个用来存放对象的类
package com.soft.pojo; public class Admin { private int id; private String username; private String password; public Admin() { } public Admin(int id, String username, String password) { this.id = id; this.username = username; this.password = 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 "Admin{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
-
创建一个测试类:UserDaoTest
package com.soft; import com.soft.dao.AdminDao; import com.soft.pojo.Admin; 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.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class test { @Test public void test03(){ try { //1、定义配置文件名 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //2.创建 SqlSessionFactory 的构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使⽤构建者创建⼯⼚对象 SqlSessionFactory SqlSessionFactory build = builder.build(inputStream); //4.使⽤ SqlSessionFactory ⽣产 SqlSession 对象 SqlSession sqlSession = build.openSession(); //5.使⽤ SqlSession 创建 dao 接⼝的代理对象 AdminDao mapper = sqlSession.getMapper(AdminDao.class); int i = mapper.add("java", "1112233"); System.out.println(i); //提交事务 sqlSession.commit(); //关闭流 sqlSession.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
package com.soft.dao; import com.soft.pojo.Admin; import com.soft.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class UserDaoTest { private InputStream in; private SqlSession session; private UserMapper user; @Before //在测试方法之前执行 public void into(){ System.out.println("开始"); //1.读取配置⽂件 in = null; try { in = Resources.getResourceAsStream("mybatis-config.xml"); } catch (IOException e) { e.printStackTrace(); } //2.创建 SqlSessionFactory 的构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.使⽤构建者创建⼯⼚对象 SqlSessionFactory SqlSessionFactory factory = builder.build(in); //4.使⽤ SqlSessionFactory ⽣产 SqlSession 对象 session = factory.openSession(); //5.使⽤ SqlSession 创建 dao 接⼝的代理对象 user = session.getMapper(UserMapper.class); } @After //在测试方法后执行 public void anto(){ System.out.println("结束"); //7.释放资源 session.commit(); session.close(); try { in.close(); } catch (IOException e) { e.printStackTrace(); } } }
补充(基于注解的 mybatis使⽤)
在持久层接口添加注解:
package com.soft.dao; import com.soft.domain.Admin; import org.apache.ibatis.annotations.Select; import java.util.List; public interface IUserDao { //查询所有信息 @Select("select * from admin;") List<Admin> getIUserDao(); }
修改 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核心配置文件--> <configuration> <!-- 配置mybatis的环境--> <environments default="development"> <!-- 配置mysql的环境--> <environment id="development"> <!-- 配置事物类型--> <transactionManager type="JDBC"/> <!-- 配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test7?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--告知mybatis的映射配置--> <mappers> <!-- <mapper resource="com/soft/dao/IUserDao.xml"/>--> <mapper class="com.soft.dao.IUserDao"/> </mappers> </configuration>