MyBatista配置及入门示例
1、简介
1.1、MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
1.2、MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、ORM(对象-关系映射)
MyBatis是ORM的一种实现,开发人员像操作对象一样操作数据库表。
3、简单示例
开发mybatis程序从步骤:
(1)导入mybaits的jar包,增加到类路径
(2)操作mysql数据库,创建一张表person
mysql常见命令流程:
参考1
参考2
>create table `person`(`id` int,`name` char(20),`age` int)ENGINE=InnoDB;
>insert into person values (1001,'zs',18);
(3)创建实体类Person
package org.ltx.entity;
public class Person {
private int id;
private String name;
private int age;
public Person() {
}
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
//重写toString,便于打印显示
public String toString() {
return this.id+"--"+this.name+"--"+this.age;
}
}
(4)对象和表的映射,通过personMapper.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的说明文档 -->
<!-- Person类和MySQL中的Person表的映射文件 -->
<!-- namespace="mapper文件的全路径" -->
<mapper namespace="org.ltx.entity.personMapper">
<!-- id的值就是给该select取得标识,resultType的值是该SQL语句的返回结果集类型 -->
<select id="queryPersonById" resultType="org.ltx.entity.Person">
<!-- 注意:此处写sql语句不需要打分号 -->
<!-- #{id}就相当于一个占位符 -->
select * from person where id = #{id}
</select>
</mapper>
(5)配置SqlSessionFactory(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">
<!-- 该配置文件的头信息可以查看mybatis的说明文档 -->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!-- 配置数据库信息,同时要导入加载mysql的jar包 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<!-- 在xml中&需要转义成& -->
<property name="url" value="jdbc:mysql://localhost:3306/testdb?&useSSL=false&serverTimezone=UTC" />
<property name="username" value="用户名" />
<property name="password" value="密码" />
</dataSource>
</environment>
</environments>
<!-- 加载mapper文件 -->
<mappers>
<mapper resource="org/ltx/entity/personMapper.xml" />
</mappers>
</configuration>
(6)测试运行
package org.ltx.entity;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class test {
public static void main(String[] args) throws IOException {
//1.加载Mybatis配置文件
String resource = "config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2.创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//3.获得session对象,相当于connection,从而操作数据库
SqlSession session = sqlSessionFactory.openSession();
//4.找到mapper文件,通过namespace+id获得对应的SQL语句,并执行SQL语句
String statement = "org.ltx.entity.personMapper.queryPersonById";
Person person = session.selectOne(statement,1001);
//打印查看结果
System.out.println(person);
//5.关闭session
session.close();
}
}
4、遇到的问题
1.对实体 “useSSL” 的引用必须以 ‘;’ 分隔符结尾。
参考文档
2.MyBatis 和 MySql的驱动程序 的jar包不兼容的问题。
解决:更换jar包,找到对应匹配的即可
5、总结:
开发mybatis程序从步骤:
配置mybatis
conf.xml:配置数据库信息 和 需要加载的映射文件
建对应的 表 - 类
配置映射文件xxxMapper.xml
增删改查标签 select
测试类:
加载相关配置
session.selectOne(“需要查询的SQL的namespace.id”,“SQL的参数值”)