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-3.2.8 Releases版 与 mybatis-3.3.0 SNAPSHOT版本
使用mybatis-generator-core-1.3.2生成dao,mapper跟model等 使用方法:解压缩之后修改XML文件(如何改可以百度,就是换jdbc参数以及你要生成的dao,mapper跟model的名字及所在位置)然后windos下cmd然后cd到你放置...
里面有txt文件照着操作 1.用idea或其他打开 2.你要用的数据库 mysql:mysqlGeneratorConfig.xml sqlserver:sqlServerGeneratorConfig.xml oracle:oracleGeneratorConfig.xml ...5.查看lib里面的src就有实体类和Dao
使用mybatis-generator-core-1.3.2生成dao,mapper跟model等 使用方法:解压缩之后修改XML文件(如何改可以百度,就是换jdbc参数以及你要生成的dao,mapper跟model的名字及所在位置)然后windos下cmd然后cd到你放置...
mybatis-generator 自动生成代码配置,相关pom文件请自行下载,这里只做generator的配置,包含bean、xml、dao
Mybatis-Generator自动生成Dao、Model、Mapping相关文件,不依赖maven,直接生成
mybatis 自动生成DAO,XML和javaBean类的工具。 mybatis-generator-core-1.3.2-bundle.zip
NULL 博文链接:https://fxzcollege6.iteye.com/blog/2312235
利用mybatis-generator-core可以自动生成实体类、dao接口和mapping映射文件,里头也提供了使用说明: 1、进入lib文件夹里头。 2、修改generatorConfig.xml配置 主要修改数据库地址,用户名,密码,以及数据库名称,...
mybatis-generator自动生成Dao和xml文件的配置文件
mybatis-generator-core-1.3.2自动生成数据库表中对应的dao和model以及mapper文件,灰常方便,压缩包是个Java工程,解压后可以直接导入到自己的eclipse中,然后修改一下唯一的配置文件generatorConfig.xml里面的...
mybatis-generator-core生成sql、对象、dao等Java文件。可以直接使用
mybatis-gennerator插件自动生成mybatis所需要的dao、bean、mapper xml文件
mybatis-generator --------------------------逆向生成工具 通过生成pojo、dao、Mapper
可自动生成sql的工具,包括xml(mapper), dao层接口,bean实体;含盖通用的增删改查方法; 本工具的优势:不用集成在spring工程中,即不依赖java工程,不用先建立或导入工程;可直接手动运行,双击bat文件,完全...
已经配置好,包含全部jar包,只需改一下generator.xml中的23行(数据库配置)和71行tableName(表名称),以及想导出的各个包名targetPackage即可,保证可用!
基于springboot-mybatis-mysql的基础实验,针对别人的示例代码有所调整、改造,资源分并不高,暂未来得及全部优化提交至github,谢谢