Mybatis基础系列一

创建第一个mybatis程序

需要配置项

1、 在conf.xml的需要配置配置两个标签数据库连接和mapper,xml文件加载信息

	<-- 进行数据库环境参数的配置
default里面是需要采用的数据库环境,因为可能有development、test等多种环境
-->
&lt;environments default="development"&gt;
&lt;environment id="development"&gt;
&lt;transactionManager type="JDBC"/&gt;
&lt;datasource type="POOLED"&gt;
&lt;property name="driver", value=""/>
&lt;property name="url", value=""/>
&lt;property name="user" value=""/>
&lt;property name="password" value=""/>
&lt;/datasource>
&lt;/environment> <-- 配置mapper.xml映射文件-->
&lt;mappers>
&lt;mapper resource=""></mapper>
&lt;/mappers>
&lt;/environments>

2、 编写mapper.xml文件

&lt;?xml version="1.0" encoding="UTF-8" ?>

&lt;!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> &lt;mapper namespace="org.lanqiao.entity.personMapper"> &lt;select id="queryPersonById" resultType="org.lanqiao.entity.Person" parameterType="int">
select * from person where id = #{id}
&lt;/select>
&lt;/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文件:

&lt;properties  resource="db.properties"/>
&lt;dataSource type="POOLED">
&lt;property name="driver" value="${driver}"/>
&lt;property name="url" value="${url}"/>
&lt;property name="username" value="${username}"/>
&lt;property name="password" value="${password}"/>
&lt;dataSource/>

优化二:设置别名

在mapper.xml文件中@resultType如果是对象类型的话要写完整

例如resultType="org.lanqiao.entity.Person"

通过设置别名我们可以简略这种写法

设置别名的方式

conf.xml文件中:

&lt;typeAliases>
<-- 单个设置别名 -->
&lt;typeAlias type="org.lanqiao.entity.Person" alias="Person"> <-- 批量设置别名 则这个包下面所有类的别名都是去除包名之后的类名-->
&lt;package name="org.lanqiao.entity">
&lt;typeAliases>

mybatis入门系列一之创建mybatis程序的更多相关文章

  1. 【转载】 mybatis入门系列四之动态SQL

    mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...

  2. mybatis入门系列三之类型转换器

    mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名, ...

  3. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  4. mybatis基础系列(一)——mybatis入门

    好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...

  5. MyBatis 入门到精通(一) 了解MyBatis获取SqlSession

    MyBatis是什么? MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果.MyBatis ...

  6. 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld

    记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...

  7. ABP入门系列之3——创建实体/Code First创建数据表

    一.首先来看看ABP体系结构 领域层就是业务层,是一个项目的核心,所有业务规则都应该在领域层实现.实体(Entity): 实体代表业务领域的数据和操作,在实践中,通过用来映射成数据库表.仓储(Repo ...

  8. mybatis入门篇:代码生成器(MyBatis Generator)

    这篇文章只是按照自己的需要去配置代码生成器,未对所有配置进行讲解,需要了解具体详情的,请到官网查阅文档.传送门:http://www.mybatis.org/generator/ 1.首先引入相关的依 ...

  9. Java入门系列之字符串创建方式、判断相等(一)

    前言 陆续从0开始学习Java出于多掌握一门语言以后的路也会更宽,.NET和Java兼顾,虽然路还很艰难,但事在人为.由于Java和C#语法相似,所以关于一些很基础的内容不会再重头讲,Java系列中所 ...

随机推荐

  1. Effective Java 第三版——42.lambda表达式优于匿名类

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  2. PAT1107:Social Clusters

    1107. Social Clusters (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue When ...

  3. mysql数据库的权限体系介绍

    一.权限体系简介: MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mysql.User.mysql.db.mysql.Host.mysql_table_priv和mysql.column ...

  4. 《Linux/Unix系统编程手册》 时间子系统

    Linux下操作系统编程有两本经典APUE即<Advanced Programming in the UNIX Environment>和TLPI<The Linux Program ...

  5. MQTT, XMPP, WebSockets还是AMQP?泛谈实时通信协议选型 good

    Wolfram Hempel 是 deepstreamIO 的联合创始人.deepstreamIO 是一家位于德国的技术创业公司,为移动客户端.及物联网设备提供高性能.安全和可扩展的实时通信服务.文本 ...

  6. LeetCode Javascript实现 283. Move Zeroes 349. Intersection of Two Arrays 237. Delete Node in a Linked List

    283. Move Zeroes var moveZeroes = function(nums) { var num1=0,num2=1; while(num1!=num2){ nums.forEac ...

  7. 十九. 想快速开发app,需要找外包吗?

    健生干货分享:第19篇 摘要:最近和两位准备开发app的创业者聊天,他们之前没有移动互联网的相关经验,有的是想法和资金.他们在纠结:想快速开发app,需要找外包吗? 最近和两位想开发app的创业者聊天 ...

  8. 使用 python 处理 nc 数据

    前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是& ...

  9. js算法初窥04(算法模式01-递归)

    终于来到了有点意思的地方--递归,在我最开始学习js的时候,基础课程的内容就包括递归,但是当时并不知道递归的真正意义和用处.我只是知道,哦...递归是自身调用自身,递归要记得有一个停止调用的条件.那时 ...

  10. Python数据运算

    身份运算 is is是判断两个标识符是不是引用自一个对象 x is y, 如果id(x)等于id(y), is 返回结果1 is not is not 是判断两个标识符是不是引用自不同对象 x is ...