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. my views--软件工程、python

    这是大三第二学期开的一门课,由吴世枫老师和王韬助教教的. 大一开了C语言,大二开了java.matlab,而用得最多的应该是学java顺便学会的C++了.matlab在实训和数学建模用了多次,尤其是数 ...

  2. 对Python这门课程的理解。

    这门课程是现在热门,对之后的就业和利用的帮助还是很大的. 希望能学完整本书并且能学以致用,而不是单单只获得理论知识. 学完之后能用于数据库.大数据处理.图形编程等等

  3. Java多线程问题

    一. Java多线程: Java给多线程编程提供了内置的支持.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 多线程是多任务的一种特别的形式,但多线 ...

  4. 设计模式之模板方法(Template Method)

    在整理模板方法之前,先来说点废话吧.除了记录学习总结,也来记录一下生活吧. 我们公司的老板在北京,老板也会因为项目来公司,不过不是天天来.公司有个同事,只要老板不在就天天迟到,而且一天比一天晚,经常来 ...

  5. python__基础 : 类的__init__,__str__,__del__方法

    __init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化. 所以如果对象有属性,一般会直接写在__init__方法里 ...

  6. arcEngine开发之查看属性表

    这篇文章给出实现属性表功能的具体步骤,之后再对这些步骤中的代码进行分析. 环境准备 拖动TOCControl.MapControl控件到Form窗体上,然后拖动ContextMenuStrip控件至T ...

  7. Python_CRC32

    #计算文件的CRC32值 import sys import zlib import os.path filename=sys.argv[1] print(filename) if os.path.i ...

  8. Jms的MessageListener中的Jms事务

    摘要 一般来说,如果为JmsTemplate做了事务配置,那么它将会与当前线程的数据库事务挂钩,并且仅在数据库事务的afterCommit动作中提交. 但是,如果一个MessageListener在接 ...

  9. echarts--迁徙图特性简介

    $(function() {    loadMapData(); //页面加载时调用封装加载echarts地图的函数});function loadMapData (cityName) {    if ...

  10. linux中普通的文件查看操作(cat、more、less、head、tail)

    cat:基本是最常用的查看文件内容的linux命令. more 也是用来查看一个文件的内容.当文件内容太多,一屏幕不能占下,而你用cat肯定是看不前面的内容的,那么使用more就可以解决这个问题了.当 ...