mybatis详解二(Dao层mapper开发) 您所在的位置:网站首页 mapper找不到xml文件里的方法 mybatis详解二(Dao层mapper开发)

mybatis详解二(Dao层mapper开发)

2024-07-10 21:22| 来源: 网络整理| 查看: 265

关于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 实验室设备网 版权所有