本文共 2326 字,大约阅读时间需要 7 分钟。
前面我们都是在使用sqlSession的方法,比如插入时,我们调用sqlSession.insert()我们传入了User.xml里面的select标签的id值"insertUser"作为方法名传入到sqlSession.insert()里面来,那么在本章节将不再使用sqlSession的这些方法((当然在讲dao时内部还会用到),而是新的方式,具体见下面
这一部分是为了过渡到Mapper讲的实际开发不会写这个(当然如果你有Web的基础本部分会十分轻松) 实际上Dao只是三层架构中的第三层,即数据访问层,另外两层是web(界面)层与service(业务逻辑层)层
1.首先创建下面的目录与文件: 2.下面演示一下findUserById方法的实现 UserDaoImpl.java类代码:package dao;import domain.User;import org.apache.ibatis.session.SqlSession;public class UserDaoImpl implements UserDao { SqlSession sqlSession; public UserDaoImpl(SqlSession session){ sqlSession=session; } @Override public User findUserById(String funcName,int id) { User user = sqlSession.selectOne(funcName,id); return user; }}
UserDao.java接口代码:
package dao;import domain.User;public interface UserDao { public User findUserById(String funcName,int id);}
删除Tset方法里面的内容使用下面代码
UserDaoImpl userDao = new UserDaoImpl(sqlSession); User user = userDao.findUserById("findUserById", 10); System.out.println(user); sqlSession.commit();//提交事务,否则会事务回滚
其他的内容前面章节已经配置好了
目录一我们讲解了编写dao接口UserDao,同时又手动编写了dao接口实现类UserDaoImpl类,下面的这种方式我们将不去手动实现这个接口的类,而是使用mapper代理的方式来实现
这一部分是本讲的核心内容 1.开发规范1.mapper接口的全限定名要和mapper映射文件的namespace的值相同。
2.mapper接口的方法名称要和mapper映射文件中的statement的id相同; 3.mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。 4.mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致;
2.准备工作 下面红圈为新增的部分(如果你没看前面的章节你会觉得有很多多余的东西,甚至很懵逼) 首先创建下面的目录与文件:
然后SqlMapConfig.xml文件的<mappers>标签下面添加下面内容UserMapper.java的内容:
package mapper;import domain.User;public interface UserMapper { //返回插入后影响的行数 public int saveUser(User user);}
根据上面的开发规范的3我们知道saveUser的参数只可以有一个
UserMap.xml文件内容:
insert into user (username,birthday,sex,address) value(#{ username},#{ birthday},#{ sex},#{ address})
注意事项:根据上面开发规范的1,2我们知道namespace的值必须是src目录下的接口的完整目录,在insert里的id必须是接口里面的方法名即saveUser,然后没指定resultType也一样可以返回int类型(即影响的行数)。
删除Tset方法里面的内容使用下面代码
User user = new User(); user.setBirthday(new Date()); user.setAddress("北京"); user.setUsername("李成"); user.setSex("男"); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.saveUser(user); sqlSession.commit();//提交事务,否则会事务回滚
转载地址:http://dvlzi.baihongyu.com/