MyBatis开发步骤:
① 添加MyBatis的坐标
② 创建user数据表 、
③ 编写User实体类
④ 编写映射文件UserMapper.xml
⑤ 编写核心文件SqlMapConfig.xml
⑥ 编写测试类
提示: 凡是有关数据库开发 我们都得导入JDBC 哦 这个小尝试要知道
下面分别导入: <!--mybatis坐标--><!--mysql驱动坐标--><!--日志坐标(Log4j)--> 这三个依赖 版本自己换既可 这里随便
<!--JDBC 坐标 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!--mybatis 坐标 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--日志坐标 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
然后新建一个user表吧 表如下: 【记得写一些数据 我们做一个简单的用 Mybatis 查询所有数据例子】
注意 这个表所在的数据库是 test ,,,这里你自己弄 配置文件中设置的时候自己换即可。
然后创建对应的 JavaBean: GETSET方法、TOSTRING 方法 等等等等...
package com.bihu.Bean;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
编写映射文件UserMapper.xml 【名字随便起】
一般在Resources下面创建文件夹然后写:
看见没 这里是 用/分隔 因为他是文件夹 ,不是包 注意啊 不然报错说找不到。。。【搞死我了 入坑】
最后就是这样的:
然后在里面写 这样好分类。。。
编写映射文件,这个文件是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">
添加头以后 写一个 <mapper> 标签 里面主要是写语句: 详细看下面代码:
<?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="userMapper">
<select id="findAll" resultType="com.bihu.Bean.User">
select * from user;
</select>
</mapper>
其中里面的 namespace 是一个名称空间 表示而已,,
,, resultType 的意思就是 映射绑定的Bean,里面写路径即可 。。
,,然后里面的<select>是查询的意思(增删改查对应的),,然后给一个ID标识,里面写查询语句即可。
namespace 和 语句标识ID 随便你写,到后面用起来的时候 是 namespace + . + 语句标识ID 组合起来找到这个 语句执行的。
核心文件直接放在 resouces 文件夹下面即可。。
有了映射文件 然后编写Mybatis的核心配置文件 SqlMapConfig.xml 【名字随便起】 里面主要配置 JDBC 的一些属性设置 和 映射文件的声明导入:
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> 标签,详细看注释吧 写的很明白
<?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:环境的意思 加了s表示复数 可以配很多和环境 default 表示默认环境 直接写环境的iD标识即可-->
<environments default="dev">
<!-- 定义一个环境 加上一个环境标识ID -->
<environment id="dev">
<!-- 这个配置事务管理器(驱动) 我们这里是JDBC 所以写JDBC -->
<transactionManager type="JDBC"></transactionManager>
<!-- 这个配置数据源 type表示数据源类型 :我们这里是连接池 -->
<dataSource type="POOLED">
<!-- 下面配置数据源 即数据库的属性 -->
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!-- 千万别忘记了这一步!! 配置映射文件 不然你映射文件不生效! -->
<mappers>
<!-- resouce 表示在resouce文件下 因为我们配了目录 所以下面从哪里开始写目录寻 注意别用. 用/ 用.是扫描包的 -->
<mapper resource="com/bihu/mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
编写测试代码
就在Spring测试类哪里写吧:
import com.bihu.Bean.User;
import org.apache.ibatis.io.Resources; //Resources 是 这个包下的
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MybatisTest {
@Test
public void db_show() throws IOException {
//首先先加载Mybatis核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");//抛出一个IO异常
System.out.println(resourceAsStream);
//获取SqlSessionFactory工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行sql语句 这个返回的是List集合 ,参数传的是 映射文件中命名空间 + 语句标识ID(namespace + . + 语句ID)
List<User> userList = sqlSession.selectList("userMapper.findAll");
//最后我么打印一下 看成功了没:
System.out.println(userList);
}
}
注意一下那些包 是在哪里写的 其次注意一下 SQLSession.selectlist() 这个方法的参数 要看懂即可 其他的 都是获取配置文件然后进行读取的。
运行:
其实蛮简单 但是稍微一点点复杂
如果出现 这个异常 去看看 <mapper resource="com/bihu/UserMapper.xml"></mapper> 写对了没 。。 即可、
IO流异常 其实你新建文件夹是 用/分隔 别一去就 用. 因为这是文件夹 不是包.