mybatis详解二(Dao层mapper开发) | 您所在的位置:网站首页 › mapper找不到xml文件里的方法 › mybatis详解二(Dao层mapper开发) |
关于mybatis实现dao层mapper开发,它可以不用写实现类,它能以代理方式自动生成实现代码。 但是,使用mapper开发,必须遵循以下原则: 一.自己定义的接口名需和mapper映射文件的名保持一致,并且在同一目录下 mapper.xml文件里的namespace属性值和接口必须一致,不然就会报错的 二.接口中的方法名必须和mapper.xml中的id保持一致 三.接口中的方法名必须和mapper.xml配置中的resultType保持一致 四.参数的类型保持一致 用mapper开发dao层就不要关注sqlSession对象的方法调用了增删改查方法,返回一个接口的代理对象,直接调用该对象的方法即可 @Testpublic void fun() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("cn/hd/dao/sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User userById = mapper.findUserById(1); System.out.println(userById);} 使用mapper开发,它的参数只有一个(如果有多余的参数,可以将多余的参数封装成pojo类) mybatis自动识别接口中的方法的返回值,从而调用它们的增删改查方法。 下面上一段完整的实例,使用mapper实现具体的增删改查 首先创建一个bean类并生成get和set方法 public class User { private Integer id; private String name; private String sex; private String address; private Integer balance; public User() { } public User(Integer id, String name, String sex, String address, Integer balance) { this.id = id; this.name = name; this.sex = sex; this.address = address; this.balance = balance; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Integer getBalance() { return balance; } public void setBalance(Integer balance) { this.balance = balance; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", address='" + address + '\'' + ", balance=" + balance + '}'; } } 然后配置sqlMapConfig.xml文件 再创建类配置文件userMapper.xml SELECT * FROM mbs WHERE id = #{id} SELECT * FROM mbs WHERE name LIKE "%"#{name}"%" SELECT LAST_INSERT_ID() INSERT INTO mbs (id,name,sex,address,balance)VALUES(#{id},#{name},#{sex},#{address},#{balance}) DELETE FROM mbs WHERE id=#{id} UPDATE mbs set name=#{name},sex=#{sex},address=#{address},balance=#{balance} WHERE id=#{id}再创建实现增删改查的接口,不需要实现接口哦 package cn.hd.mapper; import java.util.List; public interface UserMapper { User findUserById(Integer id); List findByName(String name); int UserAdd(User user); int UserDelete(Integer id); int UserUpdate(User user); } 最后创建测试类 public class DemoMapper { @Test public void fun() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("cn/hd/mapper/sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User userById = mapper.findUserById(1); System.out.println(userById); } @Test public void fun1() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("cn/hd/mapper/sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List list = mapper.findByName("莫"); sqlSession.commit(); sqlSession.close(); System.out.println(list); } @Test public void fun2() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("cn/hd/mapper/sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setName("雷锋"); user.setAddress("河南"); user.setSex("男"); user.setBalance(500); int row=mapper.UserAdd(user); sqlSession.commit(); sqlSession.close(); System.out.println(row); } @Test public void fun3() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("cn/hd/mapper/sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); int row = mapper.UserDelete(10); sqlSession.commit(); sqlSession.close(); System.out.println(row); } @Test public void fun4() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("cn/hd/mapper/sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setId(8); user.setName("雷锋"); user.setAddress("河南"); user.setSex("男"); user.setBalance(500); int row= mapper.UserUpdate(user); sqlSession.commit(); sqlSession.close(); System.out.println(row); } } 以上就是使用mapper实现的增删改查的实例了,结果以截图给大家展示数据库展示 到此mapper开发dao层带刺告一段落 |
CopyRight 2018-2019 实验室设备网 版权所有 |