使用 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">
create table ${tableName}...
<mapper namespace="com.mi.mapper.UserMapper">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 這裡需要配置兩個東西
<?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>
我在這裡寫了一個工具類別,主要目的是要拿到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; } }
#這是測試類別,透過上面的工具類別sqlSession,最關鍵的是下面這句
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
,之後就好辦了,執行介面中準備好的方法就可以了。 注意不要忘了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;
這是mapper接口,面向介面程式設計的想法還是很重要的。也是本次部落格文章最重要的部分。
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(); }
這裡要注意
1.xml檔案的namespace要寫成mapper接口的路徑,像下面.<mapper namespace="com.mi.mapper.UserMapper">
create table ${tableName}...
<mapper namespace="com.mi.mapper.UserMapper">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
<?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>
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; } }
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
注意不要忘了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中文網其他相關文章!