MyBatis
- 主要是对数据库数据的简化,类似我们之前使用的JDBC
- 回顾JDBC的使用
package www.hbkjxy.util; import java.sql.Connection; import java.sql.DriverManager; public class DbUtil { private String dbUrl = "jdbc:mysql://localhost:3306/db_laboratory"; private String dbUserName = "root"; private String dbPassword = "123456"; private String jdbcName = "com.mysql.jdbc.Driver"; public Connection getCon() throws Exception { Class.forName(jdbcName); Connection con = DriverManager.getConnection(dbUrl, dbUserName, dbPassword); return con; } public void closeCon(Connection con) throws Exception { if (con != null) { con.close(); } } public static void main(String[] args) { DbUtil dbUtil = new DbUtil(); try { dbUtil.getCon(); System.out.println("数据库连接成功"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
- 核心图
- 文档在线查看:https://mybatis.org/mybatis-3/zh/getting-started.html
- 参考视频:https://www.bilibili.com/video/BV1V7411w7VW?p=1
如何使用
- 新建Maven工程
- pom.xml,加载依赖的包
遇到的问题:导入的包,出现波浪红线<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope> </dependency> </dependencies>
解决的方案:
- 重新下载
- 更换版本
-
新建数据表(navicat)
use mybatis; CREATE table t_account( id int PRIMARY key auto_increment, username VARCHAR(11), password VARCHAR(11), age int )
-
新建数据表对于的实体类Account
- 为了简化实体类
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope> </dependency>
- 实体类的编写(@Data注解中包含了get,set和toString方法)
package com.southwind.entity; import lombok.Data; /** * @auther gerry * @date 2020/6/11- 11:22 */ @Data public class Account { private long id; private String username; private String password; private int age; }
- 创建MyBatis的配置文件config.xml,路径在resources里面
<?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> <!-- 配置MyBatis运行环境--> <environments default="development"> <environment id="development"> <!--配置JDBC事务管理 --> <transactionManager type="JDBC"/> <!--POOLED配置JDBC数据源连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--注册 AccountMapper.xml--> <mappers> <mapper resource="com/southwind/mapper/AccountMapper.xml"></mapper> </mappers> </configuration>
使用原生接口
1、MyBatis框架需要开发者自定义SQL语句,写在Mapper.xml文件中,实际开发中,会为每个实体类创建对应的Mapper.xml,定义管理对象数据的SQL。
<?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.southwind.mapper.AccoutMapper">
<insert id="save" parameterType="com.southwind.entity.Account">
insert int t_acoount(username,password,age) values(#{username},#{password},#{age})
</insert>
</mapper>
- namespace 通常设置为文件所在包+文件名的形式
- insert标签表示执行添加操作
- select标签表示执行查询操作
- updata标签表示执行更新操作
- delet标签表示执行删除操作
- id是实际调用MyBatis方法时需要用到的参数
- parameterType是调用对应方法时参数的数据类型
2、在全局配置文件config.xml中 注册AccountMapper.xml
<!--注册 AccountMapper.xml-->
<mappers>
<mapper resource="com/southwind/mapper/AccountMapper.xml"></mapper>
</mappers>
3、调用MyBatis原生接口添加操作
public class Test {
public static void main(String[] args) {
//加载MyBatis配置文件
InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
String statement = "com.southwind.mapper.AccoutMapper.save";
Account account = new Account(1L,"张三","123456",22);
sqlSession.insert(statement,account);
sqlSession.commit();
}
}
遇到的问题:无法解析AccountMapper.xml文件
解决的方案:在pom.xml加入
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
4、最后效果