Mybatis简介
- MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
- MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
- MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old JavaObjects,普通的Java对象)映射成数据库中的记录
- 其是一个半自动ORM(Object Relation Mapping对象关系映射)框架 ,Hibernant是全自动的
搭建自己的MyBatis
-
创建一个Java Web项目
-
导入依赖
导入jdbc,mybatis包,Junit包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
- Java 代码块
在项目的main目录下创建Java代码包,创建一个pojo包,再创建一个实体类,写入与数据库字段相对应的属性,且属性名应当与数据库查询出的字段名一致
package pojo;
public class User {
private String username;
private String password;
private String telephone;
private String nickname;
private String accountid;
public User(String username, String password, String telephone, String nickname, String accountid) {
this.username = username;
this.password = password;
this.telephone = telephone;
this.nickname = nickname;
this.accountid = accountid;
}
public String getAccountid() {
return accountid;
}
public void setAccountid(String accountid) {
this.accountid = accountid;
}
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;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", telephone='" + telephone + '\'' +
", nickname='" + nickname + '\'' +
", accountid='" + accountid + '\'' +
'}';
}
}
创建在Java代码包下创建Dao目录
创建一个接口UserDao
接口内写入对应方法 运行时会进行反射
package Dao;
import pojo.User;
import java.util.List;
public interface UserDao {
//查询全部
List<User> findAll();
}
- MyBatis 代码块
在main目录下创建resourcecs文件夹
在当前目录下创建db.propertise文件
内部写入自己的数据库驱动与链接地址,还有数据库对应的用户与密码
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@//localhost:1521/XXX
username=XXX
password=XXX
在文件夹内创建**mybatis-config.xml 文件**
对mybatis进行配置
<?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>
<!--导入 properties 文件 动态插入数据库连接所需数据-->
<properties resource="db.properties"/>
<!--配置mybatis环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${dirver}" />
<property value="${url}" name="url" />
<property value="${username}" name="username" />
<property value="${password}" name="password" />
</dataSource>
</environment>
</environments>
<!-- 引入SQL映射文件,Mapper映射文件 -->
<mappers>
<mapper resource="mapper.xml" />
</mappers>
</configuration>
接下来写sql映射文件
在resources目录下创建mapper.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">
<!--namespace与Dao目录下的接口相对应-->
<mapper namespace="Dao.UserDao">
<select id="findAll" resultType="pojo.User">
<!--sql 写入sql查询语句-->
SELECT username,password,telephone,nickname,accountid FROM bloglogin
</select>
</mapper>
6.在main目录下创建test文件夹 将其标记为 test resources 即可在当前包内创建测试类
SqlSession session = null;
@Before
//封装代码块,用于创建session会话
public void test0(){
String path = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(path);
System.out.println(reader);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
//创建session实例
session = sqlMapper.openSession();
}
@Test
public void test(){
//查询 利用接口进行反射
UserDao user = session.getMapper(UserDao.class);
//调用接口内方法
List<User> all = user.findAll();
System.out.println(all.size());
//关闭会话
session.close();
}
测试运行 即可查询出结果
MyBatis配置文件简介
- MyBatis 的配置文件会直接影响MyBatis的运行行为,同时内部还提供了属性信息的设置
- 文件的结构为
configuration 配置
settings 设置
typeAliases 类型命名
typeHandler 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境environment 环境变量 transactionManager 事务管理器 DataSource 数据源
databaseProvider 数据库厂商标识
mappers 映射器
properties属性
- 可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来配置
- 然而properties的作用并不单单是这样,你可以创建一个资源文件,名为jdbc.properties的文件,将四个连接字符串的数据在资源文件中**通过键值 对(key=value)**的方式放置,不要任何符号,一条占一行
代码示例:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_1129
jdbc.username=root
jdbc.password=1234