我是靠谱客的博主 冷傲店员,最近开发中收集的这篇文章主要介绍mybatis-->数据库的持久化操作(ORM框架),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • @[toc]
    • 1 配置mybatis核心控制文件(conf.xml)
    • 2 mapper.xml文件的配置
      • 2.1 resultMap 实现高级结果映射
        • 2.1.1 association:仅处理一对一的关联关系
        • 2.1.2 collection(一对多):处理返回的是结果集
        • 2.1.3 inser新增,返回当前新增的id值
      • 2.2 resultType
      • 2.3 parameterType传多参数
    • 3 MybatisUtil工具类

1 配置mybatis核心控制文件(conf.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">
<configuration>
    <!-- 引入外部文件 -->
	<properties resource="db.properties"></properties>
    
	<!-- <settings>
		<setting name="autoMappingBachavior" value="NONE"/>
	</settings> -->
	
	<!-- 别名 -->
	<typeAliases>
		<!-- 设置多个别名 -->
		<package name="com.entity"/>
        <!-- 设置单个别名 -->
        <typeAlias type="com.entity.User" alias="user"/>
	</typeAliases>
    
	<!-- default:选择使用那个数据源 -->
	<environments default="development">
		<environment id="development">
			<!-- 事务提交方式
				JDBC:利用JDBC方式处理事务(commit,rollback,close)
				MANAGED:将事务交友其他组件去托管(spring,jobss)默认会关闭连接
			  -->
			<transactionManager type="JDBC" />
			
			<!-- 数据源类型
				UNPOOLED:传统的JDBC模式(每次访问数据,都需要打开、关闭等数据库操作
				POOLED:使用数据库连接池
				JNDI:从tomcat中获取一个内置的数据库连接池,(数据库连接池-数据源)
			 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
    
    <!-- 映射xml文件 -->
	<mappers>
		<mapper resource="com/mapper/userMapper.xml" />
		<mapper resource="com/mapper/menuMapper.xml" />
		<mapper resource="com/mapper/billMapper.xml" />
	</mappers>
</configuration>

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">
<!-- namespace:接口的全类名 -->
<mapper namespace="com.mapper.BillMapper">
    <!-- 
		输出参数:
            resultMap:处理数据库字段和实体类属性名不一致的情况或需要做复杂的联合查询以便自由控制映射结构(详情在下面)
				字段名和属性名可以不一致,但是要指定要显示的列和实体类的名对应
            resultType:返回包括基础数据类型和复杂数据类型
				自动映射,一定要字段名和实体类的属性名必须要保持一致,若不一致,则需要给字段起别名,保证别名与属性名一致
		输入参数:
			parameterType:查询语句传入参数的类型的完全限定名或别名,他支持基础数据类型和复杂数据类型
 	-->
    <select id="select" resultMap="Bill_Pro" parameterType=""></select>
    <insert id="insert"></insert>
    <delete id="delete"></delete>
    <update id="update"></update>
</mapper>

2.1 resultMap 实现高级结果映射

<!-- 
	type:映射的实体类
 	id:唯一的名
-->
<resultMap>标签中
需要按照
<id>
<!-- 
	 property:实体类的属性名
	 column:数据库查出来的字段名或别名
-->
<result>
<association>	<!-- 一对一 -->
<collection>    <!-- 一对多 -->
顺序来排列

2.1.1 association:仅处理一对一的关联关系

<resultMap type="Bill" id="Bill_Pro">
	<result property="billCode" column="b_billCode"/>
	<result property="productName" column="b_name"/>
	<result property="totalPrice" column="b_totalPrice"/>
	<result property="isPayment" column="b_isPayment"/>
	<!-- 
		property:Bill实体类对象的属性名
		javaType:属性的实体类
	-->
    <!--
 		collection --- ofType 
		association --- javaType
	-->
	<association property="provider" javaType="Provider">
		<result property="proCode" column="p_proCode"/>
		<result property="proName" column="p_proName"/>
		<result property="proContact" column="p_proContact"/>
		<result property="proPhone" column="p_proPhone"/>
	</association>
</resultMap>

2.1.2 collection(一对多):处理返回的是结果集

<!-- collection是ofType -->
<collection property="provider" ofType="Provider">
    <result property="proCode" column="p_proCode"/>
    <result property="proName" column="p_proName"/>
    <result property="proContact" column="p_proContact"/>
    <result property="proPhone" column="p_proPhone"/>
</collection>

2.1.3 inser新增,返回当前新增的id值

<!-- 
	useGeneratedKeys=true	开启 
	keyProperty:返回的数据库的那个字段名
	keyColumn:实体类的名(可以不用写)
-->
<insert id="addRole" useGeneratedKeys="true" keyProperty="id" keyColumn="id"> </insert>

2.2 resultType

<select id="menuByUserid" resultType="menu" parameterType="int">
    SELECT * FROM ls_menu WHERE id IN (SELECT menuid FROM user_menu WHERE userid = #{userid})
</select>

2.3 parameterType传多参数

​ 使用注解:@Param(“别名”) 类型 变量名

​ xml中使用时直接使用别名

int addUpload2(@Param("name") String name,@Param("url") String url);

3 MybatisUtil工具类

package com.liu.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {
	public static SqlSessionFactory factory;
	public static SqlSession session;
	
	static {
		InputStream input = null;
		try {
			input = Resources.getResourceAsStream("conf.xml");
			factory = new SqlSessionFactoryBuilder().build(input);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 返回接口对象
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getMapper(Class<?> ob) {
		 session = factory.openSession();
		 return (T) session.getMapper(ob);
	}
	
	/**
	 * 关闭查询session
	 * @param session
	 */
	public static void closeSelect() {
		if(session != null) session.close();
	}
	
	/**
	 * 关闭前先执行commit()提交
	 */
	public static void closeCommit() {
		session.commit();
		if(session != null) session.close();
	}
}


最后

以上就是冷傲店员为你收集整理的mybatis-->数据库的持久化操作(ORM框架)的全部内容,希望文章能够帮你解决mybatis-->数据库的持久化操作(ORM框架)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部