MyBatis入门程序之Mapper代理方式
Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可,MyBatis会自动为mapper接口生成动态代理实现类。
一、开发规范
1、mapper接口的全限定名要和mapper映射文件的namespace的值相同
2、mapper接口的方法名称要和mapper映射文件中的statement的id相同
3、mapper接口的方法参数一般只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致
(传一个参数,可以直接以键值对方式匹配参数;如果想传多个参数,statement中不能写parameterType,SQL语句使用#{0}、#{1}```等形式占位符或者接口方法中使用注解@Param("username") String username形式
4、mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致
二、全局配置文件通过mapper的resource属性引入mapper映射文件

1、编写mapper接口
package com.hjp.mapper;
import com.hjp.po.User;
public interface UserMapper {
User findUserById(int id) throws Exception;
void insertUser(User user) throws Exception;
}
2、编写mapper映射文件,注意namespace为接口的全限定名
<?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="com.hjp.mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.hjp.po.User">
SELECT * FROM USER WHERE id=#{id}
</select>
<insert id="insertUser" parameterType="com.hjp.po.User">
INSERT INTO USER (username,sex,birthday,address) VALUES (#{userName},#{sex},#{birthday},#{address})
</insert>
</mapper>
3、将映射文件加入全局配置文件

4、测试代码
import com.hjp.mapper.UserMapper;
import com.hjp.po.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test; import java.io.InputStream;
import java.util.Date; public class MapperDemoTest { private SqlSessionFactory factory; @Before
public void setUp() throws Exception {
String resource="sqlMapConfig.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
factory=new SqlSessionFactoryBuilder().build(inputStream);
} @Test
public void findUserById() throws Exception {
SqlSession session=factory.openSession();
//创建mapper代理对象
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=userMapper.findUserById(1);
System.out.println(user);
session.close();
} @Test
public void insertUser() throws Exception {
SqlSession session=factory.openSession();
UserMapper userMapper=session.getMapper(UserMapper.class);
User user=new User();
user.setUserName("流水年华");
user.setSex("1");
user.setBirthday(new Date());
user.setAddress("bj");
userMapper.insertUser(user);
session.commit();
session.close();
} }
三、全局配置属性设置
1、properties,如设置数据库配置信息
db.properties文件内容如下

在全局配置文件中使用如下

2、typeAliases定义别名
1)单个别名定义,全局配置文件sqlMapConfig.xml添加全局属性如下

在mapper映射文件UserMapper.xml中可以修改根据ID查询用户配置如下

2)批量别名定义,全局配置文件如下

3、mapper四种映射器配置方式(注意在IDEA Maven项目下,3)和4)配置有问题,因为IDEA Maven项目默认不会把src下除Java外的文件打包进class文件中,详见···)
1)使用相对路径,如前面例子中一样
<mapper resource="mapper/UserMapper.xml"></mapper>
2)使用绝对路径(不推荐)
<mapper url="file:///F:\IDEAWeb\mybatisdemo\src\main\resources\mapper\UserMapper.xml"></mapper>
3)使用mapper接口全限定名,但这要求映射文件名称要和接口名称相同,并且和接口在同一个包下
<mapper class="com.hjp.mapper.UserMapper"></mapper>
4)注册指定包下所有映射文件,但这要求映射文件名称要和接口名称相同,并且和接口在同一个包下(推荐),如下
<package name="com.hjp.mapper"/>

MyBatis入门程序之Mapper代理方式的更多相关文章
- MyBatis入门程序之mapper映射文件常用配置命令
1.ResultMap高级结果映射 如果查询出的列名和属性名不一致,可以通过ResultMap做映射,放在statement的输出类型中 如下: 2.动态SQL,使用各种动态标签实现动态拼接sql,常 ...
- mybatis_03_ mapper代理方式实现MyBatis的Dao编写
不是用mapper代理方式也能够实现,但是不推荐 Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可.Mybatis会自动的为mapper接口生成动态代理实现类. 不 ...
- Mybatis入门程序
作为一个java的学习者,我相信JDBC是大家最早接触也是入门级别的数据库连接方式,所以我们先来回忆一下JDBC作为一种用于执行SQL语句的Java API是如何工作的.下面的一段代码就是最基本的JD ...
- MyBatis入门程序(基于XML配置)
创建一个简单的MyBatis入门程序,实现对学生信息的增删改查功能(基于XML配置) 一.新建一个Java工程,导入MyBatis核心jar包.日志相关的jar包以及连接Oracle数据库所需驱动包, ...
- mapper代理方式开发
使用mapper代理方式开发: 需要编写mapper接口,UserMapper.java需要编写映射文件,UserMapper.xml需要遵循一些开发规范,mybatis便可以自动生成mapper接口 ...
- Mybatis学习——Mybatis入门程序
MyBatis入门程序 一.查询用户 1.使用客户编号查询用户 (1).创建一个数据表 USE spring; #创建一个名为t_customer的表 CREATE TABLE t_customer( ...
- mybatis入门--mapper代理方式开发
不使用代理开发 之前,我们说了如何搭建mybatis框架以及我们使用mybatis进行简单的增删改查.现在,我们一起来构建一个dao层的完整代码.并用@test来模拟service层对dao层进行一下 ...
- MyBatis入门程序(1)
一.入门程序: 1.mybatis的配置文件SqlMapConfig.xml 配置mybatis的运行环境,数据源.事务等. <?xml version="1.0" enco ...
- mybatis入门程序-(二)
1. 添加配置文件 log4j.properties # Global logging configuration #开发环境下日志级别设置成DEBUG,生产环境设置成info或者error log4 ...
随机推荐
- 如何在ROS中使用PCL—数据格式(1)
在ROS中点云的数据类型 在ROS中表示点云的数据结构有: sensor_msgs::PointCloud sensor_msgs::PointCloud2 pcl::PointCl ...
- 微信小程序 --- e.currentTarget.dataset.id 获取不到值
直接代码 wxml代码片段 <view class='ranksList' wx:for="{{ranksLb}}"> <view class='ranksLis ...
- 客户端通过HTTP协议与服务端交换数据
客户端(包括浏览器)通过HTTP协议与服务端交换数据的描述 发起请求 header 键值对中的key大小写不敏感 Accept: application/json Content-Type: ...
- Linux的内存管理
Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经 ...
- 【Html】div 加载 html页面的方法
做网页的单页面应用时,需要在一个HTML的Div元素中加载另一个HTML页面,以前有一种方法就是用iframe,举例如下:(亲测可行) <div class="main-contain ...
- #HTTP协议学习# (八)状态码详解
可直接参考:http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html
- 简明Linux命令行笔记:touch
创建文件或修改文件时间 touch [options] file-list 参数 file-list是touch将要创建或更新的文件路径名 选项 -a 只更新访问 ...
- Linux 查看操作系统版本
在下载软件的时候,需要知道操作系统对应的版本,通过 cat /etc/issue 可以查看对应信息 运行的结果如下: CentOS release 6.7 (Final) Kernel \r on a ...
- Java开发者必备的六款工具
每一位Java程序员都会有套工具来应对工作上的挑战.多年来,Java程序员使用软件来完成他们的工作.有很多工具对他们是有用的,不过对于初入行的人员来说,寻找合适的工具是困难的,并且是浪费时间的.而今天 ...
- Intellij 2016非服务器激活
下载 http://idea.lanyus.com/jar/JetbrainsCrack-2.6.2.jar 并将 JetbrainsCrack-2.6.0.jar 放置到 D盘根目录(也可以根据自己 ...