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流异常 其实你新建文件夹是 用/分隔 别一去就 用. 因为这是文件夹 不是包.