使用 Mapper 接口的方式,不用写接口实现类,直接完成数据库操作,简单方便。 为了帮助大家更好地学习Mapper接口,小编总结了一些关于Mapper接口的知识点,希望能够帮助到有需要的人。
先上结构图:
下面是具体的代码:
一、User.java
实体类中的的get/set方法以及构造方法及toString方法就不贴了 public class User { private int id; private String name; private int age; }
二、UserMapper.java
这是mapper接口,面向接口编程的思想还是很重要的。也是本次博文最重要的部分。
接口定义有以下特点:
Mapper 接口方法名和 UserMapper.xml 中定义的每个 sql 的 id 同名。
Mapper 接口方法的输入参数类型和 UserMapper.xml 中定义的 sql 的parameterType 类型相同。
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(); }
三、userMappers.xml
这里需要注意
1.xml文件的namespace要写成mapper接口的路径,像下面.
2.在写动态创建表的语句时,要写成${tableName},而不是#{}. 点击查看两者的区别
create table ${tableName}...
下面是完整代码:包括创建表、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}
四、conf.xml
这里需要配置两个东西
配置JDBC的连接
配置mapper.xml
五、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; } }
六、MyTest.java
这是测试类,通过上面的工具类sqlSession,最关键的是下面这句
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
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(); } }
使用 Mapper 接口的方式,不用写接口实现类,直接完成数据库操作,简单方便。
先上结构图:
下面是具体的代码:
一、User.java
实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User { private int id; private String name; private int age;
二、UserMapper.java
这是mapper接口,面向接口编程的思想还是很重要的。也是本次博文最重要的部分。
接口定义有以下特点:
Mapper 接口方法名和 UserMapper.xml 中定义的每个 sql 的 id 同名。
Mapper 接口方法的输入参数类型和 UserMapper.xml 中定义的 sql 的parameterType 类型相同。
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(); }
三、userMappers.xml
这里需要注意
1.xml文件的namespace要写成mapper接口的路径,像下面.
2.在写动态创建表的语句时,要写成${tableName},而不是#{}. 点击查看两者的区别
create table ${tableName}...
下面是完整代码:包括创建表、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}
四、conf.xml
这里需要配置两个东西
配置JDBC的连接
配置mapper.xml
五、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; } }
六、MyTest.java
这是测试类,通过上面的工具类sqlSession,最关键的是下面这句
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
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(); } }
相关推荐:
Spring Boot 、 Mybatis 、 Redis快速搭建现代化Web项目
Atas ialah kandungan terperinci Mybatis的使用(mapper接口方式). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
mybatis cache tahap pertama dan cache tahap kedua
Pengenalan kepada jenis antara muka cakera keras
Apakah perbezaan antara ibatis dan mybatis
Bagaimana untuk mengkonfigurasi sambungan pangkalan data dalam mybatis
Apakah prinsip kerja dan proses mybatis
Apakah perbezaan antara hibernate dan mybatis
Adakah sah untuk membeli dan menjual Bitcoin di Huobi.com?
Apakah maksud telefon bimbit hd?