使用 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接口的路径,像下面.
<mapper namespace="com.mi.mapper.UserMapper">
2.在写动态创建表的语句时,要写成${tableName},而不是#{}. 点击查看两者的区别
create table ${tableName}...下面是完整代码:包括创建表、CRUD
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 --><mapper namespace="com.mi.mapper.UserMapper">
<!-- 创建表 -->
<update id="createTable" parameterType="String">
create table ${tableName} (id int primary key auto_increment,name varchar(20),age int) </update>
<!-- 添加数据 -->
<insert id="add" parameterType="com.mi.beans.User">
insert into t_user(name,age) value(#{name},#{age}) </insert>
<!-- 删除数据 -->
<delete id="del" parameterType="int">
delete from t_user where id = #{id} </delete>
<!-- 修改数据 -->
<update id="update" parameterType="com.mi.beans.User">
update t_user set name=#{name},age=#{age} where id=#{id} </update>
<!--根据id查询得到一个user对象-->
<select id="getUser" parameterType="int"
resultType="com.mi.beans.User">
select * from t_user where id=#{id} </select>
<!-- 查询所有的用户 -->
<select id="list" resultType="com.mi.beans.User">
select * from t_user;
</select></mapper>四、conf.xml
这里需要配置两个东西
配置JDBC的连接
配置mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 注册userMapper.xml文件 -->
<mappers>
<mapper resource="com/mi/mapping/userMappers.xml"/>
</mappers></configuration>五、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接口的路径,像下面.
<mapper namespace="com.mi.mapper.UserMapper">
2.在写动态创建表的语句时,要写成${tableName},而不是#{}. 点击查看两者的区别
create table ${tableName}...下面是完整代码:包括创建表、CRUD
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,
这样就能够保证namespace的值是唯一的 --><mapper namespace="com.mi.mapper.UserMapper">
<!-- 创建表 -->
<update id="createTable" parameterType="String">
create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)
</update>
<!-- 添加数据 -->
<insert id="add" parameterType="com.mi.beans.User">
insert into t_user(name,age) value(#{name},#{age})
</insert>
<!-- 删除数据 -->
<delete id="del" parameterType="int">
delete from t_user where id = #{id}
</delete>
<!-- 修改数据 -->
<update id="update" parameterType="com.mi.beans.User">
update t_user set name=#{name},age=#{age} where id=#{id}
</update>
<!--根据id查询得到一个user对象-->
<select id="getUser" parameterType="int"
resultType="com.mi.beans.User">
select * from t_user where id=#{id}
</select>
<!-- 查询所有的用户 -->
<select id="list" resultType="com.mi.beans.User">
select * from t_user;
</select></mapper>四、conf.xml
这里需要配置两个东西
配置JDBC的连接
配置mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 注册userMapper.xml文件 -->
<mappers>
<mapper resource="com/mi/mapping/userMappers.xml"/>
</mappers></configuration>五、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项目
以上就是Mybatis的使用(mapper接口方式)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号