MyBatis总结——开发Dao的方法
来源:互联网 发布:诚造社变形金刚淘宝 编辑:程序博客网 时间:2024/06/05 21:10
这篇博客主要介绍原始Dao开发方法和mapper代理的开发方式。
一、mybatis开发dao的原始方法
编写Dao接口及Dao接口的实现类。通过向Dao实现类中注入SqlSessionFactory,在方法体内部通过SqlSessionFactory创建SqlSession对象,再通过SqlSession对象操作statement。
代码部分:
Dao接口:
<span style="font-family:KaiTi_GB2312;font-size:18px;">* @author LiuHuiChao * 用户管理dao接口 * */ public interface UserDao { //根据id来查询用户信息 public User findUserById(int id) throws Exception; //添加用户信息 public void insertUser(User user) throws Exception; //删除用户信息 public void deleteUser(int id) throws Exception; //根据用户名称查询用户列表 public List<User> findUserByUserName(String name) throws Exception; }</span>Dao实现类:
<span style="font-family:KaiTi_GB2312;font-size:18px;">//注入sqlSessionFactory //通过构造函数注入 private SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory){ this.sqlSessionFactory=sqlSessionFactory; } @Override public User findUserById(int id) throws Exception { SqlSession sqlSession=sqlSessionFactory.openSession(); return sqlSession.selectOne("test.findUserById", id); } @Override public void insertUser(User user) throws Exception { SqlSession sqlSession=sqlSessionFactory.openSession(); sqlSession.insert("test.insertUser", user); sqlSession.commit();//提交事务 sqlSession.close();//释放资源 } @Override public void deleteUser(int id) throws Exception { SqlSession sqlSession=sqlSessionFactory.openSession(); sqlSession.insert("test.deleteUser", id); sqlSession.commit();//提交事务 sqlSession.close();//释放资源 } @Override public List<User> findUserByUserName(String name) throws Exception { SqlSession sqlSession=sqlSessionFactory.openSession(); return sqlSession.selectList("test.findUserByName", name); } } </span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">public class UserDaoImplTest { private SqlSessionFactory sqlSessionFactory; /*此方法是在执行testFindUserDaoById之前执行的*/ @Before public void setUp() throws Exception{ //sqlSessionFactory //mybatis配置文件 String resource="SqlMapConfig.xml"; //得到配置文件 InputStream inputStream=Resources.getResourceAsStream(resource); //创建会话工厂,传入mybatis的配置信息 sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindUserById() throws Exception { //创建一个UserDao,调用它的方法 UserDao userDao=new UserDaoImpl(sqlSessionFactory); User user=userDao.findUserById(1); System.out.println(user.getUsername()); } } </span>总结原始dao开发问题:
1、dao接口实现类方法中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员的工作量。
2、调用sqlsession方法时将statement的id硬编码了
3、调用sqlsession方法时传入的变量,由于sqlsession方法使用泛型,即使变量类型传入错误,在编译阶段也不报错,不利于程序员开发。
二、mapper代理方法
需要编写mapper.xml映射文件和mapper.java类(相当于dao层的接口),mybatis可以自动生成mapper接口实现类代理对象。
注意事项:
1、在mapper.xm中定义的namespace的名称要跟mapper.java的位置一致:
2、mapper.java接口中的方法名和mapper.xml中statement的id一致
3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。
4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。
mapper.xml的代码:<span style="font-family:KaiTi_GB2312;font-size:18px;"><select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User" > SELECT * FROM user where id=#{value}</select></span>mapper.java代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;">public interface UserMapper{//根据id查询用户信息 public User findUserById(int id) throws Exception;}</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">public void testFindUserById() throws Exception { SqlSession sqlSession=sqlSessionFactory.openSession(); //创建UserMapper对象 UserMapper usermapper=sqlSession.getMapper(UserMapper.class); //调用mapper方法 User user=usermapper.findUserById(1); System.out.println(user.getUsername()); }</span>
1.如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。
如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。
- MyBatis总结——开发Dao的方法
- MyBatis——Dao层开发总结
- 【MyBatis框架点滴】——MyBatis开发DAO的两种方法:原始DAO开发方法和Mapper代理方法
- MyBatis Review——开发Dao的方法
- 【Mybatis】——开发DAO方法
- Mybatis开发dao的方法
- mybatis开发dao的方法
- mybatis开发dao的方法
- MyBatis学习--mybatis开发dao的方法
- mybatis开发dao方法
- mybatis开发dao方法
- mybatis总结(4)---Mybatis 开发DAO两种方法
- mybatis开发DAO的2种方法
- 【MyBatis】开发dao方法的比较
- mybatis3--3.mybatis开发dao的方法
- mybatis 用原始的dao方法开发
- Mybatis开发dao的方法--原始dao篇
- MyBatis框架的学习(三)——Dao层开发方法
- VS2010 打包软件步骤教程
- js学习笔记:DOM——节点层次
- 二分查找,二分上界,二分下界
- 从零开始学习SLAM
- 原根
- MyBatis总结——开发Dao的方法
- Block 一张图秒懂jadeBlock 语法
- Android开发的项目框架的搭建
- chcon -t textrel_shlib_t
- PHP经典实例读书笔记--函数
- Codeforces Round #376 (Div. 2) A. Night at the Museum(水题)
- 并查集详解
- 断点续传
- 关于memcache和Redis的区别和总结