mybatis开发dao方法
来源:互联网 发布:手机淘宝供俏装修店铺 编辑:程序博客网 时间:2024/04/29 14:40
Mybatis和hibernate本质区别
Hibernate:是一个标准的对象关系映射框架,入门门槛高的,不需要程序员写SQL,SQL语句自动生成了。对SQL语句进行优化,修改比较困难。
应用环境:适用于需求变化不多的中小型项目,比如后台管理系统,ERP,OA等。
Mybatis:专注于SQL语句,需要程序员自己编写SQL语句,比较灵活。
应用环境:适用于需求变化比较多的大型项目,比如互联网项目。
原始dao开发方法(程序员需要写dao接口和dao实现类)
思路:程序员需要写dao接口和dao实现类,需要向dao实现类中注入SqlSessionFactory ,在方法体内通过SqlSessionFactory创建SqlSession。
Dao接口:
package com.neusoft.dao; import com.neusoft.vo.Users; public interface IUsersDao { //根据id查询用户信息 publicUsers findUsersById(int id) throws Exception; //添加用户信息 publicvoid insertUsers(Users users) throws Exception; //删除用户信息 publicvoid deleteUsers(int id) throws Exception;}
DAO实现类:
package com.neusoft.dao; importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory; import com.neusoft.vo.Users; public class UserDaoImpl implementsIUsersDao { //因为没有整合spring,所以这里采用构造方法来创建sqlSessionFactory privateSqlSessionFactory sqlSessionFactory; publicUserDaoImpl(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory= sqlSessionFactory; } publicvoid deleteUsers(int id) throws Exception { SqlSessionsqlSession = sqlSessionFactory.openSession(); sqlSession.delete("test.deleteUsers",id); sqlSession.commit(); sqlSession.close(); } publicUsers findUsersById(int id) throws Exception { SqlSessionsqlSession = sqlSessionFactory.openSession(); Usersusers = sqlSession.selectOne("test.findUserById",id); sqlSession.close(); returnusers; } publicvoid insertUsers(Users users) throws Exception { SqlSessionsqlSession = sqlSessionFactory.openSession(); sqlSession.insert("test.insertUsers",users); sqlSession.commit(); sqlSession.close(); } }
原始方法出现的问题:
1.dao实现类存在大量的模板代码,产生大量代码冗余。
2.调用sqlSession方法将调用方法的id硬编码。
Mapper代理方法
思路:
程序员还需要编写mapper.xml映射文件。
程序员编写mapper接口需要遵循一些开发规范。
Mybatis可以自动生成mapper接口实现类代理对象。
开发规范:
1.在xml中namespace等于dao接口的地址。
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理开发,namespace就有特殊的作用 namespace就是mapper的接口地址 --><mapper namespace="com.neusoft.mapper.IUsersDao"></mapper>
2.在dao接口中的方法名与xml中id一致。
3.dao接口中的输入和输出参数类型与xml中的输入和输出参数类型一致。
综上:其实就是实现类不再手动写,还是通过xml和dao接口来自动生成。
一些问题的总结:
1.代理对象内部调用selectOne和selectList
如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。
如果mapper方法返回集合对象,代理对象内部通过selectList查询数据。
即我在dao接口中写方法的时候,如果返回的是集合对象,返回值类型就是List<Users>。
2.mapper接口方法参数只能有一个,是否影响系统开发
在系统框架中,dao层的代码是被业务层公用的。
即使mapper接口只有一个参数,可以使用包装类型的pojo满足不同的业务方法的需求。
- mybatis开发dao方法
- mybatis开发dao方法
- Mybatis开发dao的方法
- mybatis开发dao的方法
- mybatis开发dao的方法
- MyBatis学习--mybatis开发dao的方法
- 【SpringMVC+mybatis】5.mybatis开发dao方法
- Mybatis开发dao两种方法
- mybatis开发DAO的2种方法
- mybatis学习笔记(4)-开发dao方法
- 【MyBatis】开发dao方法的比较
- mybatis3--3.mybatis开发dao的方法
- mybatis 用原始的dao方法开发
- 【Mybatis】——开发DAO方法
- Mybatis入门到精通-开发Dao方法
- Mybatis学习笔记(五)【开发dao方法】
- Mybatis开发dao的方法--原始dao篇
- 【MyBatis框架】Mybatis开发dao方法第一部分
- Java调用Linux命令
- CCF 俄罗斯方块
- Hibernate入门——Hibernate的数据库操作
- Android Studio 运行新建项目报错:Failed to execute aapt
- js原型简析
- mybatis开发dao方法
- 震惊!常见的七种排序算法都在这里了(笑)
- Windows 7 SP1 X64位系统安装Ant
- sessionStorage 、localStorage 和 cookie 之间的区别
- 关于php的range新发现
- BESTCODER ROUND92 1001.Skip the Class
- JAVA程序员不可不留意的编码规范
- Android自定义控件
- 【九度OJ】题目1185:特殊排序 解题报告