Java_myBatis_xml代理写法
这种开发方式只需要写好Mapper.xml和对应的Interface就可以了。
1.编写Mapper.xml
<?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.mavenTest.mybatis_mapper.StudentMapper">
<select id="getStudentById" parameterType="int" resultType="com.mavenTest.mybatis_test.po.Student">
select * from students_table where id = #{id}
</select>
<insert id="insertStudent" parameterType="com.mavenTest.mybatis_test.po.Student">
insert into students_table(name,student_code,createTime,class_id,userId) values(#{name},#{student_code},#{createTime},#{class_id},#{userId})
</insert>
</mapper>
2.编写interface
package com.mavenTest.mybatis_mapper;
import com.mavenTest.mybatis_test.po.Student;
public interface StudentMapper {
public Student getStudentById(int id) throws Exception;
public void insertStudent(Student s) throws Exception;
}
就这两步其实就已经完成了开发,但是值得注意的是:
1.xml中namespace要和interface的全名一致,如上面的“com.mavenTest.mybatis_mapper.StudentMapper”
2.xml中的查询标签的Id要和interface的方法名一致,如上面的“getStudentById”和“insertStudent”
3.xml中parameterType和interface方法的传参要一致,如上面的"int id"和parameterType="int"
4.xml中resultType和interface方法的返回值类型要一致,如上面的"Student"和resultType="com.mavenTest.mybatis_test.po.Student"
单元测试:
public class StudentMapperTest {
private SqlSessionFactory ssf;
@Before
public void before() throws IOException {
String resources = "SqlMapConfig.xml";
InputStream is = Resources.getResourceAsStream(resources);
this.ssf = new SqlSessionFactoryBuilder().build(is);
}
@Test
public void test() throws Exception {
SqlSession ss = this.ssf.openSession();
StudentMapper sm = ss.getMapper(StudentMapper.class);
Student s = sm.getStudentById(869);
System.out.println(s.getName());
}
}
值得注意的是,怎么生成我们想要的mapper(可以直接调用它的方法来操作数据库)呢?
我们其实还是要走:SqlSessionFactoryBuilder--build()-->SqlSessionFactory--openSession()-->SqlSession--getMapper()-->mapper
得到mapper我们就可以直接使用之前interface定义好的方法了,不再需要我们直接使用SqlSession下面的方法了
Java_myBatis_xml代理写法的更多相关文章
- Java_Mybatis_注解代理写法
Mybatis的开发方式其实有3种: 1. 原始Dao开发(就是把mapper接口.映射文件和实现类都一并开发) 2. xml代理(就是只实现mapper接口和映射文件) 3.注解代理(就是只实现ma ...
- Java_myBatis_XML代理_动态SQL
主要是设计到映射文件的编写: SELECT: <sql id="query_user_where"> <!-- test里面可以编写OGNL表达式 --> ...
- Mybatis项目中不使用代理写法【我】
首先 spring 配置文件中引入 数据源配置 <?xml version="1.0" encoding="UTF-8"?> <beans x ...
- Java_myBatis_XML代理_延迟加载
使用mybatis的延迟加载,需要两个步骤: 1.在全局配置文件中添加一下语句(lazyLoadingEnabled默认为false,aggressiveLazyLoading默认为true) < ...
- ES3、ES5、ES6对象代理的写法差异
ES3的对象代理写法: console.log('定义私有变量ES3写法:') // ES3 var Person = function (){ var data = { name:'ES3', ag ...
- Java设计模式9:代理模式
代理模式 代理模式的定义很简单:给某一对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结构 有些情况下,一个客户不想活着不能够直接引用一个对象,可以通过代理对象在客户端和目标对象之间 ...
- urllib,request 设置代理
通常防止爬虫被反主要有以下几个策略: 1.动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息) 2.使用IP地址池:VPN和代理IP,现在大部分网站都是根据IP来b ...
- 前端 | Nuxt.js axios baseURL,proxy 代理
平时用 Vue 写前端时,对于 axios 请求的常规操作一般是 统一定义好一个 axios 对象,使用 axios.defaults.baseURL 设置 baseURL 也不是不能直接把服务器地址 ...
- java 代理模式 总结
1.前言 最近舍友去面试遇到了关于java代理模式的问题. 我虽然知道怎么使用,但是没有做过正经的总结,因此有了这篇随笔,好好总结一下三大代理模式底层原理. 事实上,在开发项目的时候,基本用不上代理, ...
随机推荐
- python 生成器、列表解析式、yield、迭代器
开局一张图总结关系 一.列表解析式 我们习惯生成列表通过list = [1, 2, 3]的方式.还有一种很方便的列表生成方式 list = [a*2 for a in range(10)],或者lis ...
- Activiti Rest API tutorial
http://192.168.66.182:8080/activiti-rest/service/repository/deployments/ {"data":[{"i ...
- VMware 桥接 Bridge 复制物理网络连接状态
https://zhidao.baidu.com/question/535593443.html 意思就是说,VM上使用的是虚拟的网卡,也就是说VM虚拟机上的网卡不是真实存在的,而桥接还有其他的网路链 ...
- jQuery中click事件多次触发解决方案
jQuery 中元素的click事件中绑定其他元素的click事件. 因为jQuery中的click事件会累计绑定,导致事件注册越来越多. 解决方案: 1.能够避开,避免把click事件绑定到其他元素 ...
- bat脚本的写法
当你每次都要输入相同的命令时,可以把这么多命令存为一个批处理,从此以后,只要运行这个批处理,就相当于打了几行.几十行命令.下面以Nginx服务的停止脚本为例写一个bat批处理文件: 1.新建nginx ...
- ubuntu ftp服务
apt-get install vsftpd apt-get update vi /etc/apt/sources.list vim /etc/vsftpd.conf service vsftpd ...
- gitbook 简单使用
gitbook 简单使用 之前由于公司培训过使用 gitbook,当时也没有进行安装使用.当时就感觉就是 markdown 语法,加上我本来就是使用 markdown 进行写博客之类.再加上这个东西本 ...
- 跪求delphi 中的bitbutton 中的bmp图标
C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\Images\GlyFX
- delphi获取一个窗口的所有子窗口(包括嵌套)
unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...
- python之Counter类:计算序列中出现次数最多的元素
Counter类:计算序列中出现次数最多的元素 from collections import Counter c = Counter('abcdefaddffccef') print('完整的Cou ...