`
2277259257
  • 浏览: 515120 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MyBatis--DAO(二)

 
阅读更多

 

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代码也很舒服

 

 

 

分享到:
评论

相关推荐

    mybatis-spring-1.3.1.jar下载

    4. **简化DAO开发**:使用MyBatis-Spring,开发者可以专注于编写Mapper接口,而无需关心SqlSession的创建、关闭和事务提交等细节。 5. **批处理**:支持使用Spring的Batch模式进行批处理操作,提高数据插入、更新的...

    mybatis-3.2.8 mybatis-3.3.0-SNAPSHOT.jar

    MyBatis是一个流行的Java持久层框架,它简化了数据库操作,使得开发人员能够将SQL语句直接集成到Java代码中,从而实现数据访问的高效性和灵活性。MyBatis的两个关键版本,即mybatis-3.2.8和mybatis-3.3.0-SNAPSHOT,...

    mybatis-spring-1.3.3.jar官方下载

    这样,我们可以在 Spring 环境中通过 DAO 接口直接调用 SQL 方法,而无需关心实现细节。 5. **Transaction Management**:MyBatis-Spring 提供了与 Spring 事务管理的无缝集成,可以使用 Spring 的声明式事务管理来...

    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)

    Mybatis-Generator是一款强大的自动化工具,它可以帮助Java开发者自动生成Mybatis的相关代码,包括DAO(Data Access Object)、Model以及Mapper XML映射文件。这极大地提高了开发效率,避免了手动编写这些重复性工作...

    Mybatis-Generator自动生成Dao、Model、Mapping相关文件,不依赖maven,直接生成

    Mybatis-Generator是一款强大的工具,它能够帮助Java开发者自动生成Mybatis的DAO层、Model层以及对应的XML映射文件,极大地提高了开发效率,减少了手动编写这些基础代码的时间。这款工具的特点在于,它并不依赖于...

    Mybatis-Generator自动生成Dao、Model、Mapping直接可运行

    Mybatis-Generator是一款强大的自动化工具,它可以帮助Java开发者自动生成Mybatis的DAO层、Model层以及Mapper XML映射文件,极大地提高了开发效率。这个压缩包文件"**MybatisGenerator**"提供了一个预先配置好的环境...

    MyBatis整合Spring中间件jar包 mybatis-spring-1.3.0.jar

    总的来说,MyBatis-Spring的主要功能是简化MyBatis在Spring环境中的使用,通过提供工厂类和DAO层的集成支持,使得开发人员可以更加专注于业务逻辑,而不是数据库操作的细节。通过这个中间件,我们可以享受到Spring的...

    使用mybatis-generator-core-1.3.2生成dao,mapper跟model等

    使用mybatis-generator-core-1.3.2生成dao,mapper跟model等 使用方法:解压缩之后修改XML文件(如何改可以百度,就是换jdbc参数以及你要生成的dao,mapper跟model的名字及所在位置)然后windos下cmd然后cd到你放置...

    mybatis-generator-core-1.3.2

    MyBatis Generator (MBG) 是一个强大的工具,用于自动生成 MyBatis 映射文件、Java 模型类和 DAO 接口。这个工具极大地减少了手动编写这些常见代码的工作量,使开发者能够专注于业务逻辑的实现。"mybatis-generator-...

    Mybatis-Spring-1.2.2中文文档.zip

    SqlSessionTemplate可以直接在业务逻辑中使用,而SqlSessionDaoSupport则是一个抽象基类,可以作为自定义DAO类的父类,简化了事务和SqlSession的管理。 8. **自动装配** Mybatis-Spring支持自动装配Mapper接口,只...

    mybatis-generator-core.zip

    里面有txt文件照着操作 1.用idea或其他打开 2.你要用的数据库 mysql:mysqlGeneratorConfig.xml sqlserver:sqlServerGeneratorConfig.xml oracle:oracleGeneratorConfig.xml ...5.查看lib里面的src就有实体类和Dao

    mybatis-3.1.1.jar mybatis-3.2.2.jar mybatis-3.2.7.jar

    它引入了注解支持,使得开发者可以更方便地在实体类和DAO接口上使用MyBatis,而无需编写XML配置文件。 - MyBatis 3.2.2:这个版本在3.1.1的基础上进行了改进,可能增加了对Java 8的支持,优化了性能,并修复了一些...

    mybatis-generator-gui-plus

    MyBatis Generator(MBG)是一个强大的工具,它可以自动生成MyBatis的Mapper XML文件、Mapper接口、实体类以及DAO实现类。而`mybatis-generator-gui-plus`在此基础上增加了图形化的操作界面,使得配置和生成代码的...

    mybatis-plus-demo.zip

    MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多高级特性,简化了开发工作,使得在实际项目中操作数据库更加便捷。本 `mybatis-plus-demo.zip` 压缩包包含了一个基于 Java 8、Maven、Spring 和 SpringBoot 的简单...

    mybatis-spring-1.2.0-bundle.zip

    7. **DAO 层的简化**:MyBatis-Spring 提供的 SqlSessionTemplate 和 SqlSessionDaoSupport 两个抽象基类,可以作为 DAO 类的基类,简化了 DAO 的编写工作。 在 mybatis-spring-1.2.0 目录下,通常包含以下内容: ...

    mybatis-flex-main.zip

    2. **注解驱动**:除了传统的 XML 配置方式,Mybatis-Flex 引入了注解支持,允许开发者直接在 Dao 接口的方法上定义 SQL 语句,简化配置过程。这种方式尤其适合简单的 CRUD 操作,使代码更加整洁。 3. **自动结果...

    mybatis-spring-1.3.2.zip

    在实际应用中,`mybatis-spring-1.3.2.jar` 文件作为依赖被引入后,开发人员可以编写基于 MyBatis 的 DAO 层接口,这些接口将由 MyBatis-Spring 自动实现并注入到 Spring 容器中。这样,Service 层可以通过依赖注入...

    mybatis-spring-1.0.1-bundle.zip

    这意味着,无论在 Service 层还是 Dao 层,都可以享受到 Spring 的事务特性,提高了代码的可维护性和一致性。 6. 异常处理:MyBatis-Spring 还将 MyBatis 的异常转换为 Spring 的 DataAccessException,使得开发者...

Global site tag (gtag.js) - Google Analytics