1、Mybatis简介:
中文文档:
[https://mybatis.org/mybatis-3/zh/index.html]:
2、第一个Mybatis程序
思路:搭建环境-->导入jar包-->编写代码-->测试
2.1、搭建环境
1、搭建环境(MySQL数据库)
INSERT INTO `user`(`user`.id,`user`.`name`,`user`.pwd) VALUES(1,'张三','123456'),(2,'李四','123456'),(3,'王二','123456') mybatis中文文档:https://mybatis.org/mybatis-3/zh/index.html
2、创建代码块
package com.edu.cn.utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; //SqlSessionFactory sqlsession public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory ; static { try { //使用Mybatis第一步 获取sessionFactory对象 String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //Sqlsession 包含了数据库执行sql的全部方法 public static SqlSession getSqlsession(){ SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } }
3、编写代码
-
Dao接口
public interface UserDao { public List<User> getUserList(); }
-
接口实现类(由impl到Mapper配置文件)
public class UserDaoImpl implements UserDao { @Override public List<User> getUserList() { return null; } }
-
UserMapper.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接口--> <mapper namespace="com.edu.cn.dao.UserDao"> <select id="getUserList" resultType="com.edu.cn.pojo.User"> select * from user </select> <!--<select id="selectBlog" resultType="Blog"> select * from Blog where id = #{id} </select>--> </mapper>
-
maven导出配置文件
<!-- 在build中配置resources,防止资源导出失败的问题 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
4、测试
注意点:org.apache.ibatis.binding.BindingException: Type interface com.edu.cn.dao.UserDao is not known to the MapperRegistry.
MapperRegistry是什么?
核心配置文件中注册mappers
-
junit测试*
public class UserDaoTest { @Test public void test(){ //获得SqlSession对象 SqlSession sqlsession = MybatisUtils.getSqlsession(); //getmapper方式 UserDao mapper = sqlsession.getMapper(UserDao.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } //关闭sql sqlsession.close(); } }
-
测试中可能预见的问题 :
-
配置恩建没有初测
-
绑定接口错误
-
方法名不敌
-
返回类型不对
-
maven导出资源问题
-