MyBatis xml和dao层接口组合使用
mybatis可以用xml进行数据操作,也可以在dao层用注解的方式,也可以采取xml和dao层接口组合使用的方法。显然 ,后者更加简单
package com.zhao.entity; /** * * @author: zhao * @time: 2016年5月31日 * * @description:学生 */ public class Student { private int stuId; private String stuName; private String stuClass; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getStuClass() { return stuClass; } public void setStuClass(String stuClass) { this.stuClass = stuClass; } @Override public String toString() { return "Student [stuId=" + stuId + ", stuName=" + stuName + ", stuClass=" + stuClass + "]"; } }
1: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 namespace="com.zhao.dao.StudentDao"> <select id="queryById" parameterType="int" resultType="Student"> select * from student where stu_id=#{stuId} </select> </mapper>
当然,我们在mybatis的配置文件中,定义了类的别名、StudentDao.xml 以及数据库
<mappers> <mapper resource="com/zhao/mapper/StudentDao.xml"/> </mappers>
先进行测试
private String resource="mybatis-config.xml"; private InputStream inputStream; private SqlSessionFactory sqlSessionFactory; private SqlSession sqlSession; @Before public void before(){ inputStream=StudentTest.class.getClassLoader().getResourceAsStream(resource); sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); sqlSession=sqlSessionFactory.openSession(); } @After public void after(){ sqlSession.close(); } @Test public void testXmlQueryById() { Student student=(Student)sqlSession.selectOne("com.zhao.dao.StudentDao.queryById", 1); System.out.println(student); }
xml的方式操作数据库,用了SqlSession的selectOne方法。
public abstract <T> T selectOne(String paramString, Object paramObject);
2:在dao层使用注解
public interface StudentDao { @Select("select * from student where stu_id=#{stuId}") public Student queryById(int stuId); }
为了避免混淆,再修改一下配置文件
<mappers> <mapper class="com.zhao.dao.StudentDao"/> </mappers>
然后再进行测试
@Test public void testAnnotationQueryById(){ StudentDao studentDao=sqlSession.getMapper(StudentDao.class); Student student=studentDao.queryById(1); System.out.println(student); }
我们可以看到,是用了SqlSession的getMapper方法得到了一个Dao层接口对象,然后调用了其中的queryById方法查到的结果。
目前来看:
xml和dao层注解之间并没有什么联系,是两个不同的查询方式。
但是xml的配置比较简单,但是使用起来比较繁琐。而dao层注解需要在代码上进行操作,看起来也不舒服
3:xml+dao
mapper文件需要把xml和dao 联系起来
其实我并没有修改这个mapper文件,我们可以看到 mapper便签的namespace属性就是Dao层接口的全路径,select的id属性就是Dao层接口的相应方法,这些名字都是一样的。当然 也必须是一样的
<?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="com.zhao.dao.StudentDao"> <select id="queryById" parameterType="int" resultType="Student"> select * from student where stu_id=#{stuId} </select> </mapper>
<mappers> <mapper resource="com/zhao/mapper/StudentDao.xml"/> </mappers>
Dao层跟用注解方法中是一样的。不过Dao层接口中注解已经被我删除了
public interface StudentDao { public Student queryById(int stuId); }
不需要修改测试类
@Test public void testAnnotationQueryById(){ StudentDao studentDao=sqlSession.getMapper(StudentDao.class); Student student=studentDao.queryById(1); System.out.println(student); }
总结:这样做就是为了让xml和dao能组合起来。配置文件中配置的是xml。但是这个xml指向了一个接口。我们在用的时候通过接口来进行相应操作,会更加清晰明了。在xml中修改sql代码也很舒服
相关推荐
4. **简化DAO开发**:使用MyBatis-Spring,开发者可以专注于编写Mapper接口,而无需关心SqlSession的创建、关闭和事务提交等细节。 5. **批处理**:支持使用Spring的Batch模式进行批处理操作,提高数据插入、更新的...
MyBatis是一个流行的Java持久层框架,它简化了数据库操作,使得开发人员能够将SQL语句直接集成到Java代码中,从而实现数据访问的高效性和灵活性。MyBatis的两个关键版本,即mybatis-3.2.8和mybatis-3.3.0-SNAPSHOT,...
这样,我们可以在 Spring 环境中通过 DAO 接口直接调用 SQL 方法,而无需关心实现细节。 5. **Transaction Management**:MyBatis-Spring 提供了与 Spring 事务管理的无缝集成,可以使用 Spring 的声明式事务管理来...
Mybatis-Generator是一款强大的自动化工具,它可以帮助Java开发者自动生成Mybatis的相关代码,包括DAO(Data Access Object)、Model以及Mapper XML映射文件。这极大地提高了开发效率,避免了手动编写这些重复性工作...
Mybatis-Generator是一款强大的工具,它能够帮助Java开发者自动生成Mybatis的DAO层、Model层以及对应的XML映射文件,极大地提高了开发效率,减少了手动编写这些基础代码的时间。这款工具的特点在于,它并不依赖于...
Mybatis-Generator是一款强大的自动化工具,它可以帮助Java开发者自动生成Mybatis的DAO层、Model层以及Mapper XML映射文件,极大地提高了开发效率。这个压缩包文件"**MybatisGenerator**"提供了一个预先配置好的环境...
总的来说,MyBatis-Spring的主要功能是简化MyBatis在Spring环境中的使用,通过提供工厂类和DAO层的集成支持,使得开发人员可以更加专注于业务逻辑,而不是数据库操作的细节。通过这个中间件,我们可以享受到Spring的...
使用mybatis-generator-core-1.3.2生成dao,mapper跟model等 使用方法:解压缩之后修改XML文件(如何改可以百度,就是换jdbc参数以及你要生成的dao,mapper跟model的名字及所在位置)然后windos下cmd然后cd到你放置...
MyBatis Generator (MBG) 是一个强大的工具,用于自动生成 MyBatis 映射文件、Java 模型类和 DAO 接口。这个工具极大地减少了手动编写这些常见代码的工作量,使开发者能够专注于业务逻辑的实现。"mybatis-generator-...
SqlSessionTemplate可以直接在业务逻辑中使用,而SqlSessionDaoSupport则是一个抽象基类,可以作为自定义DAO类的父类,简化了事务和SqlSession的管理。 8. **自动装配** Mybatis-Spring支持自动装配Mapper接口,只...
里面有txt文件照着操作 1.用idea或其他打开 2.你要用的数据库 mysql:mysqlGeneratorConfig.xml sqlserver:sqlServerGeneratorConfig.xml oracle:oracleGeneratorConfig.xml ...5.查看lib里面的src就有实体类和Dao
它引入了注解支持,使得开发者可以更方便地在实体类和DAO接口上使用MyBatis,而无需编写XML配置文件。 - MyBatis 3.2.2:这个版本在3.1.1的基础上进行了改进,可能增加了对Java 8的支持,优化了性能,并修复了一些...
MyBatis Generator(MBG)是一个强大的工具,它可以自动生成MyBatis的Mapper XML文件、Mapper接口、实体类以及DAO实现类。而`mybatis-generator-gui-plus`在此基础上增加了图形化的操作界面,使得配置和生成代码的...
MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多高级特性,简化了开发工作,使得在实际项目中操作数据库更加便捷。本 `mybatis-plus-demo.zip` 压缩包包含了一个基于 Java 8、Maven、Spring 和 SpringBoot 的简单...
7. **DAO 层的简化**:MyBatis-Spring 提供的 SqlSessionTemplate 和 SqlSessionDaoSupport 两个抽象基类,可以作为 DAO 类的基类,简化了 DAO 的编写工作。 在 mybatis-spring-1.2.0 目录下,通常包含以下内容: ...
2. **注解驱动**:除了传统的 XML 配置方式,Mybatis-Flex 引入了注解支持,允许开发者直接在 Dao 接口的方法上定义 SQL 语句,简化配置过程。这种方式尤其适合简单的 CRUD 操作,使代码更加整洁。 3. **自动结果...
在实际应用中,`mybatis-spring-1.3.2.jar` 文件作为依赖被引入后,开发人员可以编写基于 MyBatis 的 DAO 层接口,这些接口将由 MyBatis-Spring 自动实现并注入到 Spring 容器中。这样,Service 层可以通过依赖注入...
这意味着,无论在 Service 层还是 Dao 层,都可以享受到 Spring 的事务特性,提高了代码的可维护性和一致性。 6. 异常处理:MyBatis-Spring 还将 MyBatis 的异常转换为 Spring 的 DataAccessException,使得开发者...