第一个mybatis程序
总结一下大体步骤:
1、导包
2、在数据库中创建表
3、在ide中创建javabeen实体类,和数据库中的表对应
4、配置mybatis的全局配置文件
5、配置xml映射文件
6、测试类
7、遇到的问题
我是用的是idea, 创建的maven项目
1 需要在pom.xml中导入mysql的jar包和mybatis的jar包,,我也导入了junit的jar包,
<dependency>
<!-- junit测试的依赖-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<!-- mysql的依赖-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<!-- mybatis的依赖 -->
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
2、接下来:在数据库中创建一个表
CREATE TABLE `tal_employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lastname` varchar(255) NOT NULL,
`gender` varchar(1) NOT NULL,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
3、然后创建一个和之前创建的表一样的javabeen实体类
public class Employee {
private int id;
private String lastName ;
private String gender ;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", lastName='" + lastName + '\'' +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
}
4、然后配置你的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>
<!--现在只配置 数据库环境 和 映射 -->
<!-- 1:配置数据库的环境 这里的default关联的是哪个数据库,就使用的哪个数据库 -->
<environments default="test">
<!--环境①:开发环境 : 以后的事务和连接池都是交给spring框架管理-->
<environment id="dev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
</dataSource>
</environment>
<!--环境②:测试环境 -->
<environment id="test">
<!--①配置事务管理器 -->
<transactionManager type="JDBC"/>
<!--②配置数据源(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- 2:配置Mapper映射器 :告诉 MyBatis 到哪里去找映射文件(存放sql语句) -->
<mappers>
<mapper resource="com\liam\MyBatis\EmployeeMapper.xml"/>
</mappers>
</configuration>
5、接下来配置你的xml映射文件,我把他暂时放在了javabeen同路径下:
<?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不同-->
<mapper namespace="com.liam.MyBatis.EmployeeMapper">
<!--
select 语句左门专门来查询的sql
id : 命名空间中的唯一标识符,可被用来代表这条语句 id + namespace 是唯一标识这个sql语句
#{id}:会在预编译的时候转换为 ?
parameterType: 往sql语句中传的参数的类型,可不写,mybatis可自行推测出来
resultType: 将结果集中的对象封装成什么对象。
-->
<select id="selectEmployee" parameterType="int" resultType="com.liam.MyBatis.Employee">
SELECT * FROM tal_employee where id= #{id}
</select>
</mapper>
6、接着写一个测试类:
public class testDemo1 {
@Test
public void select() throws IOException {
// 1、以流的形式加载mybatis的配置文件,
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 2、创建SqlSessionFactoyBudiler
SqlSessionFactoryBuilder buder = new SqlSessionFactoryBuilder();
// 3.创建sqlSessionFactory ,并且将mybatis配置文件导入
SqlSessionFactory factory = buder.build(inputStream);
// 4、创建Sqlsession对象
SqlSession session = factory.openSession();
// 5、使用session对象进行具体操作
// 选择: 第一个参数导入xml文件
Employee ployer = session.selectOne("com.liam.MyBatis.EmployeeMapper.selectEmployee", 1);
// 6、将session对象关闭
session.close();
System.out.println(ployer);
}
}
结果: Employee{id=1, lastName='tom', gender='1', email='tom@163.com'}
遇到的问题:
1、java.io.IOException: Could not find resource 。。。。
找不到配置信息
原因:
在maven项目下, idea不会编译src路径下面的xml文件,所以找不到,要在maven的pom.xml文件中的builder中添加以下:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>