Mybatis的使用(mapper接口方式)
2018-03-12 15:29
1341 查看
原文地址:http://blog.csdn.net/MPFLY/article/details/73348143
使用 Mapper 接口的方式,不用写接口实现类,直接完成数据库操作,简单方便。
先上结构图:
下面是具体的代码:
一、User.java
这是mapper接口,面向接口编程的思想还是很重要的。也是本次博文最重要的部分。接口定义有以下特点:
Mapper 接口方法名和 UserMapper.xml 中定义的每个 sql 的 id 同名。
Mapper 接口方法的输入参数类型和 UserMapper.xml 中定义的 sql 的parameterType 类型相同。
Mapper 接口的返回类型和 UserMapper.xml 中定义的 sql 的 resultType 类型相同
注意创建表的方法,有注解@Param
这里需要注意
1.xml文件的namespace要写成mapper接口的路径,像下面.
这里需要配置两个东西配置JDBC的连接
配置mapper.xml
我在这里写了一个工具类,主要目的是要拿到sqlSession,因为之后每次操作数据库都需要写一遍,所以进行一次封装.
这是测试类,通过上面的工具类sqlSession,最关键的是下面这句
注意不要忘了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 使用Mapper接口的Sql动态代码方式进行CURD和分页查询
- Mybatis使用Mapper代理的方式生成DAO接口的实现类对象
- Mybatis的使用(mapper接口方式)
- mybatis系列技术之一 mapper 接口使用的规范方式
- Mybatis在mapper接口上使用注解报反射异常
- Mybatis3.2.1使用例二:Mapper方式集成Spring、注解提供SQL
- Mybatis3.2.1使用例三:Mapper方式集成Spring、配置文件提供SQL
- spring+sprinmvc+mybatis基本整合(二)--基于spring注解mybais非注解非Mapper接口方式
- Mybatis(二)— 使用Mapper动态代理方式进行开发
- Spring Boot通过Mybatis,使用mapper接口和xml配置sql,连接数据库
- spring mybatis mapper接口注解方式注入
- mybatis笔记之使用Mapper接口注解
- mybatis3中在mapper接口方法中如何使用多参
- 使用Mybatis生成工具自动生成实体类和对应的mapper映射文件以及接口文件
- mybatis——使用mapper代理开发方式
- 简单三步快速学会使用Mybatis-Generator自动生成entity实体、dao接口以及mapper映射文件(postgre使用实例)
- Maven使用Mybatis Generator插件生成Mapper接口 xml和实体
- Spring与Mybatis整合--使用MapperScannerConfigurer批量扫描Mapper接口实现
- Mybatis--使用mybatis generator插件映射数据库,自动生成pojo对象,dao接口,mapper.xml文件的方法
- mybatis使用mapper接口生成实现类