Mybatis的使用(mapper接口方式)

赶牛上岸
Lepaskan: 2023-03-20 20:24:02
asal
6888 orang telah melayarinya

使用 Mapper 接口的方式,不用写接口实现类,直接完成数据库操作,简单方便。 为了帮助大家更好地学习Mapper接口,小编总结了一些关于Mapper接口的知识点,希望能够帮助到有需要的人。

先上结构图:
这里写图片描述
下面是具体的代码:
一、User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了 public class User { private int id; private String name; private int age; }
Salin selepas log masuk

二、UserMapper.java
这是mapper接口,面向接口编程的思想还是很重要的。也是本次博文最重要的部分。

接口定义有以下特点:

  1. Mapper 接口方法名和 UserMapper.xml 中定义的每个 sql 的 id 同名。

  2. Mapper 接口方法的输入参数类型和 UserMapper.xml 中定义的 sql 的parameterType 类型相同。

  3. Mapper 接口的返回类型和 UserMapper.xml 中定义的 sql 的 resultType 类型相同

注意创建表的方法,有注解@Param

package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper { void createTable (@Param("tableName") String tableName); void add(User user); void del(int id); void update(User user); User getUser(int id); User[] list(); }
Salin selepas log masuk
Salin selepas log masuk

三、userMappers.xml
这里需要注意
1.xml文件的namespace要写成mapper接口的路径,像下面.

Salin selepas log masuk
Salin selepas log masuk

2.在写动态创建表的语句时,要写成${tableName},而不是#{}. 点击查看两者的区别

create table ${tableName}...
Salin selepas log masuk

下面是完整代码:包括创建表、CRUD

         
         
         
         
          create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)
         
         
         
          insert into t_user(name,age) value(#{name},#{age})
         
         
         
          delete from t_user where id = #{id}
         
         
         
          update t_user set name=#{name},age=#{age} where id=#{id}
         
         
         
Salin selepas log masuk

四、conf.xml
这里需要配置两个东西

  • 配置JDBC的连接

  • 配置mapper.xml

                 
Salin selepas log masuk

五、SqlSessionUtil.java
我在这里写了一个工具类,主要目的是要拿到sqlSession,因为之后每次操作数据库都需要写一遍,所以进行一次封装.

package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis. session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil { public static SqlSession getSqlSession() throws Exception{ String resource = "conf.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Resources.getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //创建能执行映射文件中sql的sqlSession SqlSession sqlSession = sessionFactory.openSession(); return sqlSession; } }
Salin selepas log masuk

六、MyTest.java
这是测试类,通过上面的工具类sqlSession,最关键的是下面这句

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Salin selepas log masuk
Salin selepas log masuk

MyBatis通过动态代理的方式实现mapper接口,之后就好办了,执行接口中准备好的方法就可以了。
注意不要忘了sqlSession.commit()和sqlSession.close().否则在执行过程中虽然不会报错,但是数据库中是不会有变化的.

这里我只执行了创建表的方法. package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper; import com.mi.util.SqlSessionUtil;public class MyTest { public static void main(String[] args) throws Exception { SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.createTable("t_user"); sqlSession.commit(); sqlSession.close(); } }
Salin selepas log masuk
Salin selepas log masuk

使用 Mapper 接口的方式,不用写接口实现类,直接完成数据库操作,简单方便。
先上结构图:
这里写图片描述
下面是具体的代码:
一、User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User { private int id; private String name; private int age;
Salin selepas log masuk

二、UserMapper.java
这是mapper接口,面向接口编程的思想还是很重要的。也是本次博文最重要的部分。

接口定义有以下特点:

  1. Mapper 接口方法名和 UserMapper.xml 中定义的每个 sql 的 id 同名。

  2. Mapper 接口方法的输入参数类型和 UserMapper.xml 中定义的 sql 的parameterType 类型相同。

  3. Mapper 接口的返回类型和 UserMapper.xml 中定义的 sql 的 resultType 类型相同

注意创建表的方法,有注解@Param

package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper { void createTable (@Param("tableName") String tableName); void add(User user); void del(int id); void update(User user); User getUser(int id); User[] list(); }
Salin selepas log masuk
Salin selepas log masuk

三、userMappers.xml
这里需要注意
1.xml文件的namespace要写成mapper接口的路径,像下面.

Salin selepas log masuk
Salin selepas log masuk

2.在写动态创建表的语句时,要写成${tableName},而不是#{}. 点击查看两者的区别

create table ${tableName}...
Salin selepas log masuk

下面是完整代码:包括创建表、CRUD

         
         
         
         
          create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)
         
         
         
          insert into t_user(name,age) value(#{name},#{age})
         
         
         
          delete from t_user where id = #{id}
         
         
         
          update t_user set name=#{name},age=#{age} where id=#{id}
         
         
         
Salin selepas log masuk

四、conf.xml
这里需要配置两个东西

  • 配置JDBC的连接

  • 配置mapper.xml

                 
Salin selepas log masuk

五、SqlSessionUtil.java
我在这里写了一个工具类,主要目的是要拿到sqlSession,因为之后每次操作数据库都需要写一遍,所以进行一次封装.

package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil { public static SqlSession getSqlSession() throws Exception{ String resource = "conf.xml"; //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is = Resources.getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); //创建能执行映射文件中sql的sqlSession SqlSession sqlSession = sessionFactory.openSession(); return sqlSession; } }
Salin selepas log masuk

六、MyTest.java
这是测试类,通过上面的工具类sqlSession,最关键的是下面这句

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Salin selepas log masuk
Salin selepas log masuk

MyBatis通过动态代理的方式实现mapper接口,之后就好办了,执行接口中准备好的方法就可以了。
注意不要忘了sqlSession.commit()和sqlSession.close().否则在执行过程中虽然不会报错,但是数据库中是不会有变化的.

这里我只执行了创建表的方法. package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper; import com.mi.util.SqlSessionUtil;public class MyTest { public static void main(String[] args) throws Exception { SqlSession sqlSession = SqlSessionUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.createTable("t_user"); sqlSession.commit(); sqlSession.close(); } }
Salin selepas log masuk
Salin selepas log masuk

相关推荐:

mybatis分页插件pageHelper实例详解

Oracle结合Mybatis实现取表的10条数据

Spring Boot 、 Mybatis 、 Redis快速搭建现代化Web项目


Atas ialah kandungan terperinci Mybatis的使用(mapper接口方式). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!