先上结构图:
下面是具体的代码:
一、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(); } }
相关推荐:
mybatis分页插件pagehelper实例详解
oracle结合mybatis实现取表的10条数据
spring boot 、 mybatis 、 redis快速搭建现代化web项目
以上就是mybatis的使用(mapper接口方式)的详细内容。
