Mybatis全局配置文件 AND SQL映射文件

可以查看Mybatis的官方说明文档,(文档很贴心,设有中文):https://mybatis.org/mybatis-3/zh/configuration.html

 

Mybatis全局配置文件

 

下边是一个已经配置好了的Mybatis全局配置文件: config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
<!-- mybaits全局配置文件的根标签:注意该配置文件使用DTD约束,标志与标志之间要注意顺序 -->
<configuration>

  <!-- 属性标签:引入外部的properties文件
	   resource:引入类路径下的资源
	   url:引入网络路径 或者磁盘路径下的资源
  -->
  <properties resource="jdbc.properties"></properties>
 
 
  <!-- settings mybatis极为重要的调整设置,它们会改变mybatis的运行时行为
  		里边可以设置很多的属性,参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html#settings
   -->
  <settings>
  	<!-- 开启驼峰命名法规则,例如: 数据库字段 user_id  实体类属性为 userId,可以自动进行匹配成功 -->
  	<setting name="mapUnderscoreToCamelCase" value="true"/>
  </settings>
  
  
  <!-- 类型别名 -->
  <typeAliases>
  	<!-- type:指定要起别名的类型全类名   默认别名:类首字母小写。
  		 alias:指定别名
  	 -->
  	<typeAlias type="com.mybatis.bean.User" alias="us"/>
  	
  	<!-- 批量取别名,为包下的所有类批量起别名 (默认别名是类首字母小写 )。
  		  也可以使用注解@Alias("别名"),为该包下的具体类取别名
  			(mybatis已经 为 java中的基本数据类型和包装类型起了别名)
  			_byte	byte   基本数据类型别名前面加 _ 下划线
  			string	String 包装类型别名类首字母小写 
  		 name:指定包名-->
  	<package name="com.mybatis"/>
  </typeAliases>
  
  
  <!-- 环境配置,内部可以通过子标签 environment 配置多个环境
  	   default: 指定数据库运行环境,可以达到快速切换的环境的效果
   -->
  <environments default="oracle"> 
  
   <!-- mysql 环境配置 -->
    <environment id="mysql"> <!-- id:当前环境的唯一标识 -->
      <!-- 事务管理器 type:事务管理器的类型	(mybatis中有两种事务管理类型  JDBC/MANAGED )-->
      <transactionManager type="JDBC"/>
      <!-- 配置数据源  type属性:数据源类型(连接池)   POOLED是mybatis自带的连接池  -->
      <dataSource type="POOLED">
        <property name="driver"	  value="${jdbc.driverClass}"/> <!--  使用EL表达式  ${属性名}     -->
        <property name="url"	  value="${jdbc.Url}"/>
        <property name="username" value="${jdbc.User}"/>
        <property name="password" value="${jdbc.Password}"/>
      </dataSource>
    </environment>
 	 
 	 
    <!-- 配置一个oracle运行环境 -->
   <environment id="oracle"> 
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver"	  value="${orcl.driver}"/>
        <property name="url"	  value="${orcl.url}"/>
        <property name="username" value="${orcl.user}"/>
        <property name="password" value="${orcl.password}"/>
      </dataSource>
   </environment>
 	 
   </environments>
  
  
   <!-- 数据库厂商标识  type:用于指定数据库标识-->
   <databaseIdProvider type="DB_VENDOR">
	   	<!-- 为不同的数据库厂商,起别名,  
	   		属性:value= 设置别名
	   		可以在SQL指令中 通过databaseId属性 设置SQL适用的数据库
	   	"-->
       <property name="MySQL" value="mysql"/>
       <property name="Oracle" value="oracle"/>
   </databaseIdProvider>
  
  <!-- 引入sql映射文件 -->
  <mappers>
  	<!-- 引入指定的sql映射文件   因为该文件在类路径下(与mybatis同一路径下,直接指定文件名) -->
    <mapper resource="userMapper.xml"/>
  </mappers>


</configuration>

 

细说mybatis全局配置文件中的 <mappers> 标签

该标签用来将SQL文件映射到全局配置文件中,它有两个子标签 <mapper> 和 <package>
前者用于指定一个映射文件,后者用于批量配置(配置一个包下的所有SQL映射文件)

 

  • <mapper>

     resource 属性 : 引用类路径下的SQL文件 
     url           属性 : 引入网络路径 或者磁盘路径下的资源
     class       属性: 引用接口全类名       
          使用class属性注意:
               1.有映射文件,映射文件需要和接口名相同  且  SQL映射文件和 接口class文件需要在同一个路径下
               2.没有映射文件,所有的SQL指令可以通过注解写在接口方法中(不推荐使用)        

 

使用resource配置类路径下的SQL映射文件


   <!-- 配置路径下的SQL文件 -->
   <mapper resource="userMapper.xml"/>

还可以通过 通配符配置类路径下多个 SQL 映射文件 如: <mapper resource="*.xml"/>

 

使用class引用接口全类名

1.有SQL映射文件的情况下

 <mapper class="com.mybatis.dao.UserMapper"/>

  接口和SQL映射文件需要在同一个路径下,且同名

2.没有SQL映射文件的情况下

 <mapper class="com.mybatis.dao.UserMapper"/>

  DAO接口中的方法    通过mybatis提供的注解配置SQL指令

package com.mybatis.dao;

public interface UserMapper {
	
	//通过id查询User表中信息
	@Select("select * from USER where id = #{id} ") 
	User findUserById(Integer id);
}

 

  • <package> 

    用于批量配置
    name 属性:  配置包名 (SQL映射文件需要和DAO接口在同一个包下)
     注意:SQL映射文件和DAO接口必须同名且在同一个包下

<Mappers>
    <!-- 批量配置SQL映射文件 -->
    <package name="com.mybatis.dao"/>
</Mappers>

class文件和 SQL的xml文件在同一个目录下,显得太凌乱。
可以在项目的src类路径下,创建和接口相同的包,将SQL映射文件放在该包中。

如:

 

com.mybatis.dao包下的java源文件   经过编译之后的calss字节码文件   也是存放在类路径下的,
其实就是和 SQL映射文件在同一个路径下

打开eclipse中的工作空间可以看到

 

 

 

 

SQL映射文件

mybatis将SQL语句全部抽取出来,全部定义在mybatis的SQL映射文件中

Mybatis全局配置文件中配置了  类型别名、数据库运行环境、数据库厂商标识别名....等!这些可以方便我们配置SQL映射文件

 

1首先创建一个DAO接口,定义需要操作数据库的功能

package com.mybatis.dao;


/**
 * User表的 DAO接口
 */
public interface UserMapper {
	
	/***
     通过id查询User表中信息
	 */
	public User findUserById(Integer id);
	
	/**
	 新增方法
	 */
	public void save(User u);
	
	/**
	 更新方法
	   mybatis 允许  增删改  直接定义一些返回值类型
	     Integer Long Boolean   (在Mapper映射文件对应标签中,不需要设置返回值)
	  	    Integer或Long返回的是 该SQL指令影响的行数
	  		Boolen类型   大于0则返回true 小于0 返回false
	 */	
	public Integer update(User u);
	
	/**
	 删除方法
	 */
	public boolean delete(Integer id); 
	
}

 

2.建立UserMapper.xml  SQL映射文件 (配置sql指令,实现DAO接口中的方法)

<?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">
  
  <!-- 
  	 User的SQL映射文件
  	 该文件配置了执行的sql语句,以及查询出来的数据封装格式
  -->
  
<!-- namespace:名称空间(用于区别文件)  将命名空间置于合适的 Java 包命名空间之中  这样使代码更加整洁
	 使用User的Dao接口的包名类名,作为该xml的名称空间,使User的Dao接口与xml配置文件绑定
-->
<mapper namespace="com.mybatis.dao.UserMapper">
  
  <!--定义sql语句 :相当于对 UserMapper接口方法的实现  -->
  
  
  <!-- 属性:  resultType="us"     : 该属性指定结果集封装javabean类型,us是mybatis配置文件设置的别名 (表示一个类) 
  	      databaseId="mysql"  : 标识该sql指令在那个数据库执行   (mysql全局配置文件设置的别名) 
  -->
  <!-- 定义查询语句 public User findUserById(Integer id) -->
  <select id="findUserById" resultType="us" databaseId="mysql"> <!-- databaseId="数据库标识" -->
  	select * from USER where id = #{id} 
  </select>
 
  <select id="findUserById" resultType="com.mybatis.bean.User" databaseId="oracle">
  	select * from USER where id = #{id} 
  </select>
 

  <!-- 	新增员工  public void save(User u) -->
  <!-- 使用 insert标签
  	   parameType 属性: 代表参数类型  (这里的参数类型是User对象)
  				    可以使用全类名,或者使用Mybatis配置文件中已经    配置的别名
   -->
  <insert id="save" parameterType="us"> <!-- 使用别名:us -->
  	insert into USER(name,password,money,sex) value(#{name},#{password},#{money},#{sex}) <!-- 内部就是使用User对象的get方法取值 -->
  </insert>

  <!-- 更新方法  public void update(User u) -->
  <update id="update" parameterType="com.mybatis.bean.User">
  	update user set name=#{name},money=#{money} where id = #{id} 
  </update>
  
  <!-- 删除  public void delete(Integer id) -->
  <delete id="delete" parameterType="integer"> <!-- mybatis已经为 Java基本属类型和包装类配置了别名 -->
  	delete from user where id = #{id}
  </delete>
  
</mapper>

注意:SQL映射文件需要 与 要实现的DAO接口 同名 如: DAO接口 UserMapper.java  SQL映射文件: UserMapper.xml

 

 

Mybatis全局配置文件和 SQL映射文件配置好了,测试一下

@Test
public  void test1() throws IOException {
		
	String resource = "config.xml";
	InputStream inputStream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
	/**
	 *  openSession() 获取一个Session对象(一次与数据库的会话)   该Sission不会自动提交事务
	 *  openSession(true) 获取Session对象,会自动提交事务 
	 */
	SqlSession session = sqlSessionFactory.openSession();
						
	//通过反射   动态创建 DAO接口对象
	UserMapper mapper = session.getMapper(UserMapper.class);
				
	//调用查询方法 
	User user = mapper.findUserById(1);

	user.setName("秃头");
		
	//调用更新
	mapper.update(user);
		
	//调用删除方法
	mapper.delete(4);
		
	//事务提交
	session.commit();
		
	session.close();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值