• mybatis入门系列一之创建mybatis程序


    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>
    
    
  • 相关阅读:
    【Git教程】Git教程之分支管理
    【Git教程】Git教程及使用命令
    【深入理解Java虚拟机】自动内存管理机制——垃圾回收机制
    HDU-5902-GCD is Funny解题笔记
    数据结构——二叉树的遍历
    数据结构——树
    Css--input输入框点击时去掉外框outline:medium;(chrome)
    JSON中eval与parse的区别
    【转载】实时监听输入框值变化的完美方案:oninput & onpropertychange
    使用寄存器点亮LED(第2节)—寄存器映射代码讲解
  • 原文地址:https://www.cnblogs.com/huanglf714/p/10767170.html
Copyright © 2020-2023  润新知