转载

基于IOC容器实现管理mybatis过程解析

SqlSessionFactory是mybatis的基础中的基础,必须实例!

逻辑思路:

  • 减少代码冗余,需要封装mybatisAPI。
  • 可以注册SqlSessionFactoryBean,来完成SqlSessionFactory的实例化。

它的实例化需要(依赖)"mybatis-config.xml"文件,

其中有三大抽象:1、数据源;2、别名;3、注册mapper

可以把依赖(作为属性)注入(DI)到SqlSessionFactoryBean中,

来完成SqlSessionFactory的实例化。

pom:junit、webmvc、mysql-connector、spring-jdbc、mybatis、mybatis-spring、lombok

1、spring-dao.xml:bean约束

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd">
</beans>

2、db.properties

jdbc.driver=com.mysql.cj.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/数据库?serverTimezone=GMT%2B8

jdbc.username=root

jdbc.password=123

3、引入数据库配置文件

<context:property-placeholder location="classpath:db.properties"/>

4、从spring自带jdbc配置数据源

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

5、利用SqlSessionFactoryBean获取配置SqlSessionFactory实例

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
    <property name="typeAliasesPackage" value="pojo"/>
  </bean>

6、扫描dao包,同时生成sqlsessionTemplate和注入mapper接口的实现类

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="dao" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

7、加载spring-dao.xml获取上下文,从而为dao接口自动装配

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-dao.xml");  StudentDao studentDao = (StudentDao) context.getBean("studentDao");  List<Student> students = studentDao.selectAll();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间:2020-07-15

浅谈Spring IoC容器的依赖注入原理

本文介绍了浅谈Spring IoC容器的依赖注入原理,分享给大家,具体如下: IoC容器初始化的过程,主要完成的工作是在IoC容器中建立 BeanDefinition 数据映射,并没有看到IoC容器对Bean依赖关系进行注入, 假设当前IoC容器已经载入用户定义的Bean信息,依赖注入主要发生在两个阶段 正常情况下,由用户第一次向IoC容器索要Bean时触发 但我们可以在 BeanDefinition 信息中通过控制 lazy-init 属性来让容器完成对Bean的预实例化,即在初始化的过程中就

IDEA创建springboot + mybatis项目全过程(步骤详解)

鉴于隔很久再在IDEA新建springboot项目时,会出现对步骤不确定的情况,因此,写下这篇博客记录创建一个可运行的springboot+mybatis项目的全过程. 步骤如下: 1.打开IDEA 2.File ==> new ==> project ,如图: 3.选择spring Initializr ==> 右边的Project SDK我选的是我已经安装的1.8版本,其他默认 ==> 点击next 4.填写Group (自己随意就行,我的是cn + 个人英文名 + study

IDEA 去除 mybatis.xml 文件黄色警告的图文教程

默认情况下在 mybatis 的 xml 文件中,IDEA 会报如下警告 去除黄色背景的警告,步骤如下 找到 设置 , Editor,Inspections,SQL 去除 No data sources configuared 的勾(√),点击 OK 然后,再去掉 SQL dialect detection 的勾(√),点击 OK 将上边两个勾都去掉后,这时 xml 文件背景变成了绿色 接下来,需要去掉"注入语言"的背景色 找到 Editor,General,Code,Injected

PHP进阶学习之依赖注入与Ioc容器详解

本文实例讲述了PHP依赖注入与Ioc容器.分享给大家供大家参考,具体如下: 背景 在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多. 最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.目前许多主流PHP框架也使用了依赖注入容器,如ThinkPHP.L

springboot+mybatis通过实体类自动生成数据库表的方法

前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</ve

MyBatis3传递多个参数(Multiple Parameters)

传递多个参数一般用在查询上,比如多个条件组成的查询,有以下方式去实现: 版本信息: MyBatis:3.4.4 1.自带方法 <select id="getUserArticlesByLimit" resultMap="resultUserArticleList"> select user.id,user.userName,user.userAddress,article.id as aid,article.title,article.content f

关于SpringBoot获取IOC容器中注入的Bean(推荐)

一: 注入一个TestUtils类 package com.shop.sell.Utils; import com.shop.sell.dto.CartDTO; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TestUtils { @Bean(name="test

mybatis查询结果返回至实体类的示例代码

近期,利用mybatis做一个简单查询,先看主要代码: Service层: package com.example1.service; import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.exampl

深入浅出MyBatis中映射文件和实体类的关联性

mybatis的映射文件写法多种多样,不同的写法和用法,在实际开发过程中所消耗的开发时间.维护时间有很大差别,今天我就把我认为比较简单的一种映射文件写法记录下来,供大家修改建议,争取找到一个最优写法~~: 以User对象和UserMap.xml为例讲解,代码如下: User为用户实体类(仅作为讲解,可以只关注引用类型变量,get/set方法省略): import com.google.common.collect.Lists; import com.gukeer.common.persisten

IDEA快速生成实体类的示例教程

不多说,直接上步骤: ① idea左侧有个dataBase ② ③ 1处填写数据库连接的必要信息,填写完成后点击2可以测试你填的信息是否正确,没问题就点apply ④ 选择你要生成实体的对应的表,右键,生成的实体的属性是以驼峰命名的,例如sl_user表里有个字段叫user_id,那么生成的属性名就是userId ⑤ 选择你要把生成的实体类文件放在哪个包路径下 ⑥ 如果生成的类名不符合你所在项目的命名规则,可以ctrl+shift_R 重命名.生成的属性的属性类型有些不是自己想要的,可以选择属性

Django模型序列化返回自然主键值示例代码

场景 在设计表结构时,难免需要建立一些外键关联.例如这样两个模型: from django.db import models class Person(models.Model): username = models.CharField(max_length=100) birthdate = models.DateField() class Book(models.Model): name = models.CharField(max_length=100) author = models.Fo

Oracle + Mybatis实现批量插入、更新和删除示例代码

前言 Mybatis是web工程开发中非常常用的数据持久化的框架,通过该框架,我们非常容易的进行数据库的增删改查.数据库连接进行事务提交的时候,需要耗费的资源比较多,如果需要插入更新的数据比较多,而且每次事务只提交一条数据,会造成非常大的数据库资源浪费,导致数据库性能.系统性能大幅度下降. 关于mybatis的批量插入,网上的多数示例多半是关于MySQL数据库的,关于Oracle数据库的例子比较少.本文将给大家介绍关于Oracle+Mybatis批量插入.更新和删除的相关内容,下面话不多说了,来

Ajax叠加(Ajax返回数据用Ajax发出)示例代码

最近在做人事管理系统的一个签到功能,首先是把部门当做参数,把参数用Ajax发送到数据库进行查询,然后以表格形式动态生成员工信息到返回页面的Div里,表格最后的一列是签到按钮,这时我想用JQuery继续获取被点击的"签到"按钮,然后用Ajax将数据发送到数据库签到表,更新签到表,于是我就把每个签到按钮的id属性设置成第一次Ajax返回的每个员工信息的工号,再次用JQuery获取,怎么获取呢?想到了标签加事件选择器,于是写了下面代码: 复制代码 代码如下: $(function(){ $(

SpringBoot返回json和xml的示例代码

基于IOC容器实现管理mybatis过程解析

有些情况接口需要返回的是xml数据,在springboot中并不需要每次都转换一下数据格式,只需做一些微调整即可. 新建一个springboot项目,加入依赖jackson-dataformat-xml,pom文件代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu

Asp操作Xml的精炼类,含示例代码

以下保存成 App.xml , 与asp文件放在相同目录下! 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <Root> <About> <Version>1.0 Beta</Version> <LatestVersion>1.0 Beta</LatestVersion> <Author>Author</Auth

基于Java反射的map自动装配JavaBean工具类设计示例代码

前言 JavaBean是一个特殊的java类,本文将给大家详细介绍关于基于Java反射的map自动装配JavaBean工具类设计的相关内容,下面话不多说了,来一起看看详细的介绍吧 方法如下 我们平时在用Myabtis时不是常常需要用map来传递参数,大体是如下的步骤: public List<Role> findRoles(Map<String,Object> param); <select id="dindRoles" parameterType=&qu

mybatis查询语句的背后揭秘

基于IOC容器实现管理mybatis过程解析

一.前言 在先了解mybatis查询之前,先大致了解下以下代码的为查询做了哪些铺垫,在这里我们要事先了解,myabtis会默认使用DefaultSqlSessionFactory作为sqlSessionFactory的实现类,而sqlSession的默认实现类为DefaultSqlSession public static SqlSessionFactory getSessionFactory() throws IOException { Reader reader = Resources.ge

ASP.NET JSON字符串与实体类的互转换示例代码

还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈. 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Runtime.Serialization.Json;using System.ServiceModel.Web;///记得引用这个命名空间using System.IO;using System.Tex

原文  https://www.zhangshengrong.com/p/bYXxqvpD1Z/
正文到此结束
Loading...