Mybatis——HelloWorld
学习Mybatis第一天:
首先稍微说一些Mybatis,其类似于Hibernate
但是由于Hibernate在灵活性方面的缺点,又因为jdbc代码和获取结果集的不便,Mybatis集二者优点于一身
接着我们就来创建我们第一个Mybatis程序:
首先先看看最后的目录,根据目录来编写相应的代码:
第一步:加入jar包
加入相关的jar包:
1.mybatis-3.4.1.jar
2.log4j.jar(还需其配置文件)
3.mysql-connector-java-8.0.15.jar
1.mybatis-3.4.1.jar 要使用mybatis当然要加入此包啦,这个就是最重要的使用mybatis的包
2.log4j用于输出日志等
3.java连接mysql的驱动包
注意:我使用的是以上的版本,但是实际应该要根据自己的来制定,log4j现在好像是有2.x 和1.x不一样,貌似有二个包,log4j-api-2.11.1.jar
log4j-core-2.11.2.jar
还需要把其配置文件放在src下,名字必须为log4j2.xml
第二步:配置全局配置文件
我们把jar加入之后,像Hibernate一样,同样要配置数据库的一些信息把,不然怎么连接呢,mybatis有一个全局配置文件,相当于mybatis的系统设置一样,在这个里面配置其环境,事务,数据库的信息
我们取名为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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
可以从节点上看出来其作用,
configuration :显然是配置节点,说明这是个配置文档
environments: 可以配置多个环境
environment: 配置具体的环境
transactionManager :配置事务管理器
dataSource:数据源,显然在里面配置连接数据库的信息
mappers:用于配置sql语句
接着就是我自己填写好的配置文件;
<?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>
<!-- 环境们配置-->
<environments default="development">
<!-- 环境-->
<environment id="development">
<!-- 事务管理器-->
<transactionManager type="JDBC"/>
<!-- 数据源-->
<dataSource type="POOLED">
<property name="username" value="root"/>
<property name="password" value="...."/>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
</dataSource>
</environment>
</environments>
<!--SQL映射文件-->
<mappers>
<mapper resource="config/EmployeeMapper.xml"/>
</mappers>
</configuration>
目前我还没有编写mapper的映射文件,上面的是配置了mapper的配置文件,如何把此注释掉,就可以测试连接数据库了
第三步:编写并配置Employee持久化类
employee持久化类:
package com.chenx.mybatis.entities;
public class Employee {
private Integer id;
private String lastName;
private String email;
private Integer gender;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", gender=" + gender +
'}';
}
}
EmployeeMapper.xml:
在此编写有关Employee的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.chenx.mybatis.entities.Employee">
<select id="selectEmployee" resultType="com.chenx.mybatis.entities.Employee">
select * from tb_employee where id = #{id}
</select>
</mapper>
namespce:命名空间
select:id:标识符
resultType: 返回值类型,需要指定返回的全类名
select里面就是SQL语句,参数使用#{…} 表示
第四步:测试
测试我们加入了三个包,使用junit单元来测试,也可以用别的办法,只要语句对就行了:
@Test
public void test()throws Exception{
String resource = "config/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
System.out.println(sqlSessionFactory);
SqlSession sqlSession=sqlSessionFactory.openSession();
try {
Employee employee = sqlSession.selectOne("com.chenx.mybatis.entities.Employee.selectEmployee",1);
System.out.println(employee);
} finally {
sqlSession.close();
}
}
首先看到以下三行代码:
String resource = "config/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
获取mybatis-config.xml配置文件,用其创建SqlSessionFactory,根据以往经验获取SessionFactory之后就可以通过其创建Session然后就可以根据其执行数据库的操作了