企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
>### 1.请看第3节hello的demo (存在问题,每次都要指定查询那个命名空间下的那个标签的sql,类型是object类型) >### 2.使用接口+配置文件 (接口与配置文件动态绑定。mybatis会为接口自动创建代理对象) (注意:1.需要将namespace中的值,写成接口的全路径 2.接口方法名称跟标签id一致) (使用接口式优点,有明确的返回值,更严格的类型检查。将规范与实现分离,可以使用不同的持久层技术,方便开发扩展以及维护。) >### 3.使用接口+注解 SqlSession可以直接调用方法的id进行数据库操作,但是我们一般还是推荐使用SqlSession获取到Dao接口的代理类,执行代理对象的方法,可以更安全的进行类型检查操作。。。 推荐使用第二种开发模式!!!!! ~~~ //第二种方式的demo... //EmployeeMapper.xml文件 <mapper namespace="cn.li.dao.EmployeeDao"> <select id="selOne" resultType="cn.li.pojo.Employee"> select * from employee where id=#{id} </select> </mapper> //EmployeeDao Employee selOne(Integer id); //test类 @Test public void test2(){ //测试 接口+xml文件的形式来开发mybatis SqlSession sqlSession=getSqlSession(); EmployeeDao employeeDao=sqlSession.getMapper(EmployeeDao.class); System.out.println(employeeDao.getClass()); Employee employee=employeeDao.selOne(3); System.out.println(employee); sqlSession.close(); } //封装一个获取sqlsession对象的方法。 public SqlSession getSqlSession(){ Reader reader=null; try { reader = Resources.getResourceAsReader("resource.xml"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //通过会话工厂获取SqlSession对象,一个SqlSession对象代表和数据库的一次会话 SqlSession session = sqlSessionFactory.openSession(); return session; } ~~~ ~~~ //第三种方式的demo public interface EmpDao { @Select("select * from employee where id=#{id}") Employee getOne(Integer id); } //测试类 @Test public void test3(){ SqlSession sqlSession=getSqlSession(); EmpDao empDao=sqlSession.getMapper(EmpDao.class); Employee employee=empDao.getOne(7); System.out.println(employee); sqlSession.close(); } //在全局配置文件里注册 <mappers> <mapper class="cn.li.dao.EmpDao"/> </mappers> ~~~