mybatis入门系列一之创建mybatis程序
Mybatis基础系列一
创建第一个mybatis程序
需要配置项
1、 在conf.xml的需要配置配置两个标签数据库连接和mapper,xml文件加载信息
<-- 进行数据库环境参数的配置
default里面是需要采用的数据库环境,因为可能有development、test等多种环境
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<datasource type="POOLED">
<property name="driver", value=""/>
<property name="url", value=""/>
<property name="user" value=""/>
<property name="password" value=""/>
</datasource>
</environment>
<-- 配置mapper.xml映射文件-->
<mappers>
<mapper resource=""></mapper>
</mappers>
</environments>
2、 编写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="org.lanqiao.entity.personMapper">
<select id="queryPersonById" resultType="org.lanqiao.entity.Person" parameterType="int">
select * from person where id = #{id}
</select>
</mapper>
mybatis规定一个SQL语句最多只能有一个输入参数
3、 编写与数据库中对应的类
4、 编写测试类(可选)
public static void main(String[] args) throws IOException {
//加载MyBatis配置文件(为了访问数据库)
Reader reader = Resources.getResourceAsReader("conf.xml") ;
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;
//session - connection
SqlSession session = sessionFactory.openSession() ;
//statement用来定位SQL语句,是XXXmapper.xml中的namespace.id构成的
String statement = "org.lanqiao.entity.personMapper.queryPersonById" ;
//有参数时,将参数作为第二个参数跟在statement后面,若没有则调用只有一个参数的select函数
Student person = session.selectOne( statement,1 ) ;
System.out.println(person);
session.close();
}
mybatis程序升级版
每次写一个定位SQL的statement很麻烦,我们可以采用动态代理或者接口开发的方式
与第一种方式的不同之处
采用约定优于配置的思想,,省略掉statement,根据约定直接定位出SQL语句
步骤
conf.xml,XXXmapper.xml以及实体类的编写都与上述方法相同,
不同的是增加一个XXXmapper.java的接口,
要求:
1、 mapper.java类名应该与mapper.xml里面的namespace相同
2、 mapper.java中的方法名称与mapper.xml里面对应的每一个SQL语句对应的id相同
3、mapper.java中方法的输入参数类型与mapper.xml中的@parameterType相同(若没有@parameterType则为无参函数)
4、mapper.java中方法的返回值类型与mapper.xml中的@resultType一致
则测试函数中可以修改为
StudentMapper studentMapper = session.getMapper(StudentMapper.class) ;
studentMapper.方法();
程序优化
优化一:将数据库连接信息单独放在一个配置文件db.properties
为了方便查看与修改有关数据库连接的信息,我们可以选择将其单独放入一个.properties的配置文件中,采用键值对方式表示
然后在conf.xml文件里面引入这个.properties文件之后用${}的形式引用当中的变量与值
示例:
db.properties文件:
driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username=scott
password=tiger
conf.xml文件:
<properties resource="db.properties"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<dataSource/>
优化二:设置别名
在mapper.xml文件中@resultType如果是对象类型的话要写完整
例如resultType="org.lanqiao.entity.Person"
通过设置别名我们可以简略这种写法
设置别名的方式
conf.xml文件中:
<typeAliases>
<-- 单个设置别名 -->
<typeAlias type="org.lanqiao.entity.Person" alias="Person">
<-- 批量设置别名 则这个包下面所有类的别名都是去除包名之后的类名-->
<package name="org.lanqiao.entity">
<typeAliases>
mybatis入门系列一之创建mybatis程序的更多相关文章
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
- mybatis入门系列三之类型转换器
mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名, ...
- mybatis入门系列二之输入与输出参数
mybatis入门系列二之详解输入与输出参数 基础知识 mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...
- mybatis基础系列(一)——mybatis入门
好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...
- MyBatis 入门到精通(一) 了解MyBatis获取SqlSession
MyBatis是什么? MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果.MyBatis ...
- 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...
- ABP入门系列之3——创建实体/Code First创建数据表
一.首先来看看ABP体系结构 领域层就是业务层,是一个项目的核心,所有业务规则都应该在领域层实现.实体(Entity): 实体代表业务领域的数据和操作,在实践中,通过用来映射成数据库表.仓储(Repo ...
- mybatis入门篇:代码生成器(MyBatis Generator)
这篇文章只是按照自己的需要去配置代码生成器,未对所有配置进行讲解,需要了解具体详情的,请到官网查阅文档.传送门:http://www.mybatis.org/generator/ 1.首先引入相关的依 ...
- Java入门系列之字符串创建方式、判断相等(一)
前言 陆续从0开始学习Java出于多掌握一门语言以后的路也会更宽,.NET和Java兼顾,虽然路还很艰难,但事在人为.由于Java和C#语法相似,所以关于一些很基础的内容不会再重头讲,Java系列中所 ...
随机推荐
- vue项目 构建 打包 发布 三部曲
一.vue项目的创建 1.首先第一肯定是要有Node.js及npm这个不多说了2.安装脚手架 此时可以直接浏览-但是现在肯定有很多小白想将他发布到gitHub上并可以浏览,使用vue全家桶制作自己的博 ...
- mac下安装windows系统
前言:我装win系统的原因很简单,就是某天突然想玩qq宠物了(不要嘲笑,自行尴尬一波)... 下面进入正题: 1.我的当前系统版本: 其实App Store 上新版本的os系统也已经出来很长一段时间了 ...
- Axios源码深度剖析 - 替代$.ajax,成为xhr的新霸主
前戏 在正式开始axios讲解前,让我们先想想,如何对现有的$.ajax进行简单的封装,就可以直接使用原声Promise了? let axios = function(config){ return ...
- JS方法:数字转换为千分位字符
/** * 数字转为千分位字符 * @param {Number} num * @param {Number} point 保留几位小数,默认2位 */ function parseToThousan ...
- 理解Python中的yield
1.通常的for...in...循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文件.它可以是mylist = [1, 2, 3],也可以是mylist = [x*x ...
- 关于PHP处理Json数据的例子
最近工作需要在原来静态看板(大屏)页面的基础上,实现数据的动态展示,而且需要定时刷新. 接到任务后就马不停蹄的开始修改页面: 显然这个需求最好的解决方法就是用Ajax对后台数据进行定时请求,在前端页面 ...
- ubuntu 16.04启用root用户方法
1.使用:sudo passwd root设置root的密码,如下图所示: 2.使用su root来测试是否可以进入root用户,如果出现#说明已经设置root用户的密码成功,如下图所示:
- lookup_peer.go
, fmt.Sprintf("LOOKUP connecting to %s", lp.addr)) conn, err := net.DialTimeout(" ...
- Java RESTful 框架的性能比较
来源:鸟窝, colobu.com/2015/11/17/Jax-RS-Performance-Comparison/ 如有好文章投稿,请点击 → 这里了解详情 在微服务流行的今天,我们会从纵向和横向 ...
- Java 线程池(ThreadPoolExecutor)原理分析与使用
在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...