一、Dao层开发的方式
以前dao层开发比较繁琐,写了接口还得写实现类,实际上用了Mybatis之后写实现类非常重复,都是重复的代码。那么此时改成另外一种简单形式。
遵循以下四个原则(名称、形参、返回值、命名空间):
1.Mapper接口方法名和Mapper.xml中定义的每个statement(SQL语句)的id相同
2.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
3Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
4. Mapper.xml文件中的namespace与mapper接口的全路径名相同。(用来把用户的接口和用户的mapper文件对应好。仅靠ID可不行,也许用户和订单都有个相同ID的SQL)
二、mappers(映射器)
之前写过这个:
但是当有很多Mapper映射文件的时候岂不是要复制写很多遍?
Mapper配置的几种方法:
<mapper resource=" " />
使用相对于类路径的资源(现在的使用方式)
如:<mapper resource="sqlmap/User.xml" />
<package name=""/>
注册指定包下的所有mapper接口
如:<package name="cn.itcast.mybatis.mapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
三、查询多条数据
四、逆向工程
使用逆向工程可以轻易的全自动生成POJO和mapper映射文件和接口等,大大的提高了开发效率
把generatorSqlmapCustom这个工程Import进Eclipse。
这是个工程,要根据我们的具体要求修改
修改配置文件
在generatorConfig.xml中配置Mapper生成的详细信息,如下图:
注意修改以下几点:
- 修改要生成的数据库表(数据库,账号 密码 哪些表等)
- pojo文件所在包路径
- Mapper所在的包路径
-------------------------------正式去生成------------------------------------------------------------------------
找到里面src下的唯一的Java文件。运行
然后刷新工程,惊喜地发现如下:
生成mapper包,并且下面的映射文件和接口都写好了
Pojo也都正好了
最后提一下里面的XxxxExample.java文件的作用
// 创建User对象扩展类,用户设置查询条件
UserExample example = new UserExample();
example.createCriteria().andUsernameLike("%张%");
// 查询数据
List<User> list = userMapper.selectByExample(example);
比如以上代码中example对象可以用来设置很多很多过滤条件 它有很多方法。
example用于添加条件,相当where后面的部分
xxxExample example = new xxxExample();
Criteria criteria = new Example().createCriteria();
具体参考文章:MyBatis的Mapper接口以及Example的实例函数及详解(http://blog.csdn.net/biandous/article/details/65630783)
注意:
- 逆向工程生成的代码只能做单表查询
- 不能在生成的代码上进行扩展,因为如果数据库变更,需要重新使用逆向工程生成代码,原来编写的代码就被覆盖了。
- 一张表会生成4个文件