Spring精品教程资料:3.MyBatis与Spring的整合

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

《Java+Spring+MyBatis课件》

《Java+Spring+MyBatis课件》

轻量级框架
了解Spring的核心理念和设计 原则,以及框架的优势。
依赖注入
掌握Spring的IoC容器和依赖 注入的原理及用法。
面向切面编程
学习Spring AOP的概念和使用 方法,实现面向切面的编程。
Spring事务管理
事务的概念
理解事务的含义和作用,以及在 应用程序中的应用方式。
数据库事务
掌握Spring对数据库事务的管理 机制,确保数据的一致性和完整 性。
异常处理
1
异常处理机制
2
掌握try-catch语句和throw关键字的用法,
可以捕获和抛出异常。
3
什么是异常
理解异常是什么以及如何在程序中处理 异常情况。
常见异常类型
熟悉常见的异常类型,如 NullPointerException和 IndexOutOfBoundsException。
Spring框架介绍
事务隔离级别
了解事务隔离级别的不同,选择 合适的级别来满足应用程序的需 求。
Spring MVC框架
1
MVC模式
理解MVC模式的概念和作用,了解Spring
请求处理
2
MVC的架构。
学习如何处理用户请求和响应,掌握处
理器映射和控制器的使用。
3
视图解析
了解视图解析器的原理和使用方法,实 现页面的动态渲染。
《Java + Spring + MyBatis 课件》
这个课件主要介绍了Java、Spring和MyBatis的基础知识和使用方法。
Java基础语法
1 数据类型和变量
了解Java的基本数据类型和 变量的声明和使用方法。
2 控制结构

spring整合mybatis错误:classpathresource[configspr。。。

spring整合mybatis错误:classpathresource[configspr。。。

spring整合mybatis错误:classpathresource[configspr。

spring 整合Mybatis运⾏环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:class path resource [config/spring/springmvc.xml] cannot be opened because it does not exist 错误原因:找不到我的springmvc.xml,在下⾯web.xml中是我引⽤路径,⽹上找到问题classpath指向路径不是resource路径,所以⼀直找不到我的xml⽂件, classpath:到你的class路径中查找⽂件, classpath*:不仅包含class的路径,还包括jar⽂件中(class路径)进⾏查找 解决办法:在classpath后⾯在上“*” 可解决问题,“classpath*:springmvc.xml” 错误代码:1 2017-04-05 08:15:10 [org.springframework.web.servlet.DispatcherServlet]-[INFO] FrameworkServlet 'springmvc': initialization started2 2017-04-05 08:15:10 [org.springframework.web.context.support.XmlWebApplicationContext]-[INFO] Refreshing WebApplicationContext for namespace 'springmvc-servlet': startup date [Wed Apr 05 08:15:10 CST 2017]; parent: Root WebApplica3 2017-04-05 08:15:10 [org.springframework.beans.factory.xml.XmlBeanDefinitionReader]-[INFO] Loading XML bean definitions from class path resource [springmvc.xml]4 2017-04-05 08:15:10 [org.springframework.web.servlet.DispatcherServlet]-[ERROR] Context initialization failed5 org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [springmvc.xml]; nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] canno6 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)7 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)8 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)9 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)10 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)11 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)12 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)13 at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)14 at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)15 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)16 at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)17 at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)18 at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)19 at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)20 at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)21 at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)22 at javax.servlet.GenericServlet.init(GenericServlet.java:160)23 at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)24 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)25 at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)26 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)27 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)28 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)29 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)30 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)31 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)32 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)33 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)34 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)35 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)36 at .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)37 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)38 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)39 at ng.Thread.run(Thread.java:722)40 Caused by: java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be opened because it does not exist41 at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)42 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)43 ... 33 more 相关代码:web.xml 配置:1<?xml version="1.0" encoding="UTF-8"?>2<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" 3<display-name>Springmvc_Mybits_store</display-name>4<!-- 加载spring容器 -->5<context-param>6<param-name>contextConfigLocation</param-name>7<param-value>classpath:applicationContext-*.xml</param-value>8</context-param>9<!-- 监听器,扫描通配符 -->10<listener>11<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>12</listener>13<!-- 前端控制器配置 -->14<servlet>15<servlet-name>springmvc</servlet-name>16<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>17<!--加载springmvc.xml配置-->18<init-param>19<param-name>contextConfigLocation</param-name>20<param-value>classpath:springmvc.xml</param-value>21</init-param>22</servlet>23<!-- servlet映射 -->24<servlet-mapping>25<servlet-name>springmvc</servlet-name>26<url-pattern>*.action</url-pattern>27</servlet-mapping>28<welcome-file-list>29<welcome-file>index.html</welcome-file>30<welcome-file>index.htm</welcome-file>31<welcome-file>index.jsp</welcome-file>32<welcome-file>default.html</welcome-file>33<welcome-file>default.htm</welcome-file>34<welcome-file>default.jsp</welcome-file>35</welcome-file-list>36</web-app>。

三大框架整合及其原理

三大框架整合及其原理

一搭建三大框架步骤1 搭建s2sh步骤分析:1.1在MyEclipse 里面新建一个 java web project1.2新建三个 Source Folder :src : 源文件config : 存放配置文件 : hibernate , spring , struts2test: 测试类1.3 导入环境需要的jar 包 : WebRoot/WEB-INF/lib (一共64个)2 搭建Hibernate 和Spring 整合(*根据搭建需求谁能先测试就先搭建谁)2.1 在 src 源文件里面建立一个 cola.s2sh.domain[并且在该包下创建一个持久类和该类的映射文件] .2.2 配置核心文件在 config 里面建立一个hibernate 文件夹里面创建hibernate.cfg.xml配置文件(里面的内容拷贝就可以)2.3 在spring 文件夹里面创建并且把sessionFactory 交给spring 来管理: [applicationContext-db.xml中引入][<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"><value>classpath:hibernate/hibernate.cfg.xml</value> </property></bean>]在 applicationContext.xml 中 : 导入<import resource="applicationContext-db.xml"/>2.4 测试sessionFactory[编写SpringUtils 然后继承这个][public class SpringUtils {public static ApplicationContext context;static {context = newClassPathXmlApplicationContext("spring/applicationContext.xml" );}}]2.5 编写 dao .service 的包类和接口;PersonDaoImpl 要继承HibernateDaoSupport[public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {public void savePerson(Person person) {this.getHibernateTemplate().save(person);}}]2.6 把 dao ,service 放在spring 容器中:[<bean id="personDao"class="cola.s2sh.daoImpl.PersonDaoImpl"> <property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><bean id="personService"class="cola.s2sh.service.impl.PersonServiceImpl"><property name="personDao"><ref bean="personDao"/></property></bean>]2.7 完成 spring 声明式处理 :[<!-- 事务管理 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><tx:advice id="tx"transaction-manager="transactionManager"><tx:attributes><tx:method name="save*"read-only="false"/><tx:method name="update*"read-only="false"/><tx:method name="delete*"read-only="false"/><!--除了上面三种情况以外的情况--><tx:method name="*"read-only="true"/></tx:attributes></tx:advice><aop:config><aop:pointcutexpression="execution(* cola.s2sh.service.impl.*.*(..))"id="perform"/><aop:advisor advice-ref="tx"pointcut-ref="perform"/> </aop:config>]2.8 整合struts 创建 action 类包 ;2.9 把action 放在spring 容器中* 注意在personAction的spring的配置中一定要写一个属性scope="prototype"[<bean id="personAction"class="cola.s2sh.action.PersonAction" scope="prototype"><property name="personService"><ref bean="personService"/></property></bean>]在这个中引入下面3.0 编写struts2中配置文件Struts –person.xml中Struts.xml3.1 编写web .xml文件[<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>cola.s2sh</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!—将srping放在SrvletContext中进行加载当servlet加载时 spring 也完成加载 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value> </context-param><filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter -class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>]二原理分析:一、 Struts 2框架整合Spring步骤1、复制文件。

struts2+spring3+mybatis整合

struts2+spring3+mybatis整合

--src|-com.ssm|-action|-LoginAction.java|-entity|-User.java|-iface|-IUserDao.java|-impl|-UserDao.java|-seriface|-IUserServices.java|-impl|-UserServices.java|-sqlmap|-User.xmlapplicationContext.xmldatabase.Propertieslog4j.PropertiesmyBatis-config.xmlstruts.Propertiesstruts.xmlok直接上代码了:Action类: LoginAction.javapackage com.ssm.action;import java.util.ArrayList;import java.util.List;import com.opensymphony.xwork2.Action;import er;import com.ssm.seriface.IUserService;public class LoginAction implements Action{private User user;private IUserService userServices;public void setUserServices(IUserService userServices) {erServices = userServices;}public User getUser(){return user;}public void setUser(User user){er = user;}public String execute() throws Exception{String aaa= getUser().getId()+"";List userList= new ArrayList();userList= userServices.selectUserById(getUser().getId()); if(userList.size()>0){return Action.SUCCESS;}else{return Action.ERROR;}}}实体类User.javapackage com.ssm.entity;import java.io.Serializable;import java.util.Date;public class User implements Serializable{private int id;private String name;private String password;private Date birthday;public User(){}public User(String name, String password, Date birthday) {= name;this.password= password;this.birthday= birthday;}public int getId(){return id;}public void setId(int id){this.id = id;}public String getName(){return name;}public void setName(String name){ = name;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public Date getBirthday(){return birthday;}public void setBirthday(Date birthday){this.birthday = birthday;}}IUserDao接口类IUserDao.javapackage com.ssm.iface;import java.util.List;public interface IUserDao{public boolean userVaild(String name, String password);public List selectUserById(int id);}UserDaoImpl实现接口类:UserDaoImpl.javapackage com.ssm.iface.impl;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.ssm.iface.IUserDao;//import com.ssb.baseutil.SqlMapClientDaoSupport;//import com.ssb.iface.IUserDao;//import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; public class UserDaoImpl extends SqlMapClientDaoSupport implements IUserDao {public List selectUserById(int id){// TODO Auto-generated method stubreturn getSqlMapClientTemplate().queryForList("selectUserById", id);}public boolean userVaild(String name, String password){// TODO Auto-generated method stubreturn false;}/*public boolean userVaild(String name, String password){return false;}public List selectUserById(String id){return getSqlMapClientTemplate().queryForList("getUserById", id);}*/}业务类IUserServices.javapackage com.ssm.seriface;import java.util.List;public interface IUserService{public boolean userVaild(String name, String password); public List selectUserById(int id);}UserServicesImpl.javapackage com.ssm.seriface.impl;import java.util.List;import com.ssm.iface.IUserDao;import com.ssm.seriface.IUserService;public class UserServiceImpl implements IUserService{private IUserDao serviceUserDao= null;public IUserDao getServiceUserDao(){return serviceUserDao;}public void setServiceUserDao(IUserDao serviceUserDao) {this.serviceUserDao = serviceUserDao;}public List selectUserById(int id){// TODO Auto-generated method stubreturn serviceUserDao.selectUserById(id);}public boolean userVaild(String name, String password){// TODO Auto-generated method stubreturn erVaild(name, password);}}mybatis实体配置文件User.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC"-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="user"><resultMap type="User" id="userResultMap"><id property="id" column="ID"/><result property="name" column="NAME"/><result property="password" column="PASSWORD"/><result property="birthday" column="BIRTHDAY"/></resultMap><select id="selectUserById" parameterType="ng.String" resultType="User"><![CDATA[SELECT * FROM USER SUWHERE SU.ID = #{id}]]></select></mapper>sprng配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p" xmlns:context="/schema/context"xmlns:jee="/schema/jee" xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd/schema/context/schema/context/spring-context-2.5.xsd/schema/jee/schema/jee/spring-jee-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"><!-- 数据源属性配置文件--><!-- <bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:com/databaseconfig/database.properties"/></bean>--><context:property-placeholder location="classpath:database.properties"/><bean id="dataSource" class="boPooledDataSource"><property name="driverClass" value="${jdbc.driverClassName}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${ername}" /><property name="password" value="${jdbc.password}" /><property name="autoCommitOnClose" value="true"/><property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/><property name="initialPoolSize" value="${cpool.minPoolSize}"/><property name="minPoolSize" value="${cpool.minPoolSize}"/><property name="maxPoolSize" value="${cpool.maxPoolSize}"/><property name="maxIdleTime" value="${cpool.maxIdleTime}"/><property name="acquireIncrement" value="${cpool.acquireIncrement}"/><property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/> </bean><!-- 数据连接管理--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- myBatis文件--><!--<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:myBatis-config.xml"/></bean>--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="dataSource" ref="dataSource"/></bean><!-- ibatis2.x 配置<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="dataSource" ref="dataSource"/></bean>--><bean id="mapDao" class="org.mybatis.spring.MapperFactoryBean"><!-- 这里是接口,不是接口实现类了--><property name="mapperInterface" value="com.ssm.iface.IUserDao"/><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean><bean id="userServices" class="erServiceImpl"><property name="serviceUserDao" ref="mapDao"/></bean><bean id="LoginAction" class="com.ssm.action.LoginAction"><property name="userServices" ref="userServices"/></bean></beans>数据库连接属性配置文件(其实可以不用这么复杂)database.Propertiesjdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/ddtest?characterEncoding=utf8 ername=rootjdbc.password=123cpool.checkoutTimeout=5000cpool.minPoolSize=20cpool.maxPoolSize=50cpool.maxIdleTime=7200cpool.maxIdleTimeExcessConnections=1800cpool.acquireIncrement=10log4j 随便到log4j里copy一个吧mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC"-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><typeAliases><typeAlias alias="User" type="er"/></typeAliases><mappers><mapper resource="com/ssm/sqlmap/User.xml" /></mappers></configuration>struts配置文件struts.Properties##整合spring的struts.objectFactory=springeClassCache = truestruts.locale=zh_CNstruts.i18n.encoding=GBKstruts的Action配置文件struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="style" extends="struts-default"><!--<action name="loginAction" class="sys.style.design.action.LoginAction"> <result name="success">success.jsp</result><result name="error">error.jsp</result></action>--><action name="loginAction" class="com.ssm.action.LoginAction"><result name="success">success.jsp</result><result name="error">error.jsp</result></action></package></struts>。

SpringBoot、Mybatis、Layui 集成前后台高效开发

SpringBoot、Mybatis、Layui 集成前后台高效开发

Spring: the source for modern java
Spring Framework 5
未来趋势:Spring Boot+ SpringWeb Flux + Spring Cloud.
Spring MVC基于Servlet API构建,并使用一个同步阻塞I / O体系结构和一个单线程请求线程模型的Web 框架 Spring WebFlux是一个非阻塞的Web框架,从该组建立起,利用多核,下一代处理器和大量并发连接。
Spring Boot
Spring Cloud
Spring Cloud常用组件
Spring Cloud集成相关优质项目推荐
微服务架构集大成者,云计算最佳业务实践 这些项目是Spring Cloud官方项目或对Spring Cloud进行了有益的补充以及基于Spring Cloud最佳实践
Spring Cloud Data Flow
• 2. SpringCloud大部分的功能插件都是基于SpringBoot去实现的,SpringCloud关注于全局的微服务整合和管理,将多个
springBoot单体微服务进行整合以及管理;SpringCloud依赖于springBoot开发,而SpringBoot可以独立开发;
Spring、SpringMvc、SpringBoot和SpringCloud关系
Spring作为专业的开发web项目的开源框架,SpringMVC为内部的一个模块环节,同样采取MVC设计模式。
• 什么是SpringBoot
SpringBoot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务; 特点:简单易用,初学者和大牛都可以轻松上手,其中的注解会给使用者提供方便; SpringBoot对第三方技术进行了很好的封装和整合,提供了大量第三方接口; 可以通过依赖自动配置,不需要XML等配置文件

Spring和MyBatis整合自动生成代码里面text类型遇到的坑

Spring和MyBatis整合自动生成代码里面text类型遇到的坑

Spring和MyBatis整合⾃动⽣成代码⾥⾯text类型遇到的坑Spring和MyBatis整合以后,使⽤⾃动⽣成代码⼯具⽣成dao和mapper配置⽂件,⽣成步骤如下(以Intelli idea为例)。

1.编写⽣成代码配置⽂件generatorConfig.xml。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><classPathEntry location="D:\dev\maven\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/><context id="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3"><commentGenerator><property name="suppressDate" value="true"/><!-- 是否去除⾃动⽣成的注释 true:是: false:否 --><property name="suppressAllComments" value="false"/></commentGenerator><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mycollege?characterEncoding=utf-8"userId="root"password="root"></jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- ⽣成模型的包名和位置 --><javaModelGenerator targetPackage="com.cx.elearnning.model"targetProject="src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!-- generate xml --><sqlMapGenerator targetPackage="/"targetProject="src/main/resources/mapper"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- generate Mapper --><javaClientGenerator type="XMLMAPPER" targetPackage="com.cx.elearnning.dao"targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--需要⾃动⽣成的表名和对应的model名--><table tableName="sys_user" domainObjectName="SysUser"></table></context></generatorConfiguration>2.配置如下maven运⾏命令。

springboot整合mybatis基于注解开发传入对象

springboot整合mybatis基于注解开发传入对象

springboot整合mybatis基于注解开发传入对象Spring Boot是一个用于构建基于Spring的应用程序的框架,而MyBatis是一个非常流行的Java持久层框架。

利用注解是一种非常简洁的开发方式,可以减少繁琐的配置,提高代码的可读性和易维护性。

本文将介绍如何使用Spring Boot整合MyBatis基于注解开发传入对象。

首先,我们需要在POM文件中添加Spring Boot和MyBatis的相关依赖。

```xml<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- MyBatis Starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><!-- MySQL Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency></dependencies>```接下来,我们需要配置数据库连接和MyBatis的相关配置。

《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题

《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》_课后习题

第一章【思考题】1、请简述Spring框架的优点。

2、请简述什么是Spring的IoC和DI。

【答案】1、Spring框架的优点如下:(1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。

(2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。

(3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。

(4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。

(5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring 程序。

(6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。

(7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API (如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。

2、IoC的全称是Inversion of Control,中文名称为控制反转。

控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。

这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。

DI的全称是Dependency Injection,中文称之为依赖注入。

它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。

从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SSI框架搭建SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6编号:SSI-SMVC3-S3-I3版本:V1.0级别:公开编写时间:2016-02-17目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)2 搭建SpringMVC (2)2.1 搭建所需jar包 (2)2.2 其他依赖包 (3)2.3 搭建步骤 (4)2.3.1 创建项目 (4)2.3.2 导入jar包 (6)2.3.3 配置web.xml (7)2.3.4 配置spring-servlet.xml (9)2.3.5 配置applicationContext.xml (10)2.3.6 配置log4j.properties (10)3 整合mybatis (11)3.1 整合所需jar包 (11)3.2 其他依赖包 (11)3.3 整合步骤 (11)3.3.1 导入jar包 (11)3.3.2 配置config.properties (12)3.3.3 配置spring-dataSource.xml (12)3.3.4 配置applicationContext.xml (15)3.3.5 配置mybatis-config.xml (16)3.3.6 创建实体model (17)3.3.7 创建实例化dao (19)3.3.8 创建业务服务service (21)3.3.9 创建控制层controller (23)3.3.10 页面代码 (28)3.3.11 启动项目 (37)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。

1.2 范围本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。

SpringMvc与Mybatis整合

SpringMvc与Mybatis整合

SpringMvc与Mybatis整合1.目的学习SpringMvc与Mybatis怎样整合在一起。

2.环境准备1)jdk版本:jdk1.7或jdk1.82)IDE:eclipse3)Tomcat:Apache Tomcat v7.04)数据库:mysql及navicat for mysql3.整合3.1.新建一个web项目注意:这里选择Dynamic Web Module 2.5 ,因为2.5是主流,默认在eclipse的WebContent \WEB-INF\目录下创建web.xml的,而3.0则默认没有web.xml文件3.2.添加整合所需的jar包注:所有的包已经放到文件jar里面了3.3.web.xml配置3.3.1.代码如下:<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance /schema/cache/springmodules-cache.xsd /schema/cache/springmodules-ehcache.xsd"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"><display-name>SpringMvc-Mybatis</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- Spring配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 编码过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 添加对springmvc的支持 --><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</se rvlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value> </init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>3.3.2.代码详解:1)Spring配置文件:applicationContext.xml(下面会介绍)2)编码过滤器:选择UTF-8,解决中文乱码问题3)Spring监听器:org.springframework.web.context.ContextLoaderListener4)添加对springmvc的支持SpringMVC配置文件:spring-mvc.xml(下面会介绍)3.4.spring-mvc.xml配置3.4.1.代码如下:<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:aop="/schema/aop"xmlns:context="/schema/context"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/beans/schema/beans/spring-beans-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd /schema/jee/schema/jee/spring-jee-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd"><!-- 使用注解的包,包括子集 --><context:component-scan base-package="com.java1234.controller"/><!-- 视图解析器 --><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewReso lver"><property name="prefix"value="/"/><property name="suffix"value=".jsp"></property></bean></beans>3.4.2.代码详解:1)使用注解的包,包括子集:自动扫描"com.java1234.controller"包下的所有类,作为controller层的类2)视图解析器:controller层返回的数据会解析到相应的 .jsp里面3.5.applicationContext.xml配置3.5.1.代码如下:<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:aop="/schema/aop"xmlns:context="/schema/context"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/beans/schema/beans/spring-beans-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd /schema/jee/schema/jee/spring-jee-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd"><!-- 自动扫描 --><context:component-scan base-package="com.java1234.dao"/><context:component-scan base-package="com.java1234.service"/><!-- 配置数据源 --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"value="com.mysql.jdbc.Driver"/><property name="url"value="jdbc:mysql://localhost:3306/db_mybatis2"/><property name="username"value="root"/><property name="password"value="123456"/></bean><!-- 配置mybatis的sqlSessionFactory --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource"ref="dataSource"/><!-- 自动扫描mappers.xml文件 --><property name="mapperLocations"value="classpath:com/java1234/mappers/*.xml"></property><!-- mybatis配置文件 --><property name="configLocation"value="classpath:mybatis-config.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage"value="com.java1234.dao"/><property name="sqlSessionFactoryBeanName"value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionMana ger"><property name="dataSource"ref="dataSource"/></bean><!-- 配置事务通知属性 --><tx:advice id="txAdvice"transaction-manager="transactionManager"> <!-- 定义事务传播属性 --><tx:attributes><tx:method name="insert*"propagation="REQUIRED"/><tx:method name="update*"propagation="REQUIRED"/><tx:method name="edit*"propagation="REQUIRED"/><tx:method name="save*"propagation="REQUIRED"/><tx:method name="add*"propagation="REQUIRED"/><tx:method name="new*"propagation="REQUIRED"/><tx:method name="set*"propagation="REQUIRED"/><tx:method name="remove*"propagation="REQUIRED"/><tx:method name="delete*"propagation="REQUIRED"/><tx:method name="change*"propagation="REQUIRED"/><tx:method name="get*"propagation="REQUIRED"read-only="true"/><tx:method name="find*"propagation="REQUIRED"read-only="true"/><tx:method name="load*"propagation="REQUIRED"read-only="true"/><tx:method name="*"propagation="REQUIRED"read-only="true" /></tx:attributes></tx:advice><!-- 配置事务切面 --><aop:config><aop:pointcut id="serviceOperation"expression="execution(* com.java1234.service.*.*(..))"/> <aop:advisor advice-ref="txAdvice"pointcut-ref="serviceOperation"/></aop:config></beans>3.5.2.代码详解:1)自动扫描:自动扫描"com.java1234.dao"和"com.java1234.service"包下的所有类,作为dao层和service层的类2)配置数据源:就是连接数据库,包括driverClassName、url、username、password这四项3)整合最重要①配置mybatis的sqlSessionFactory:作为整合的桥梁,以前我们要自己获取,现在由spring管理,简单方便"org.mybatis.spring.SqlSessionFactoryBean"由lib目录下的mybatis-spring-1.2.0.jar包提供②引入数据源"dataSource"③自动扫描mappers.xml文件,即映射文件④mybatis配置文件:mybatis-config.xml(下面会介绍)4)DAO接口所在包名,Spring会自动查找其下的类:注入"sqlSessionFactoryBeanName"5)(事务管理):spring用到的,引入数据源"dataSource"6)配置事务通知属性7)配置事务切面注:(关于spring事务管理配置:这里简单介绍了一下,具体介绍网上有很多,这里不详细介绍了,大家想深入了解就百度一下吧)事务在系统服务启动的时候就加载了,一般的,我们把事务配在service层,利用service的业务逻辑借口统一的管理。

Spring视频教程 Spring MVC开发实例-基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站

Spring视频教程 Spring MVC开发实例-基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站

Spring视频教程Spring MVC开发实例—基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站课程讲师:伍老师课程分类:Java适合人群:中级课时数量:80课时用到技术:SpringMCV、MyBatis、FreeMarker涉及项目:CMS大型门户网站更新程度:完毕Spring视频教程原文地址:/goods-296.html一、课程来源:华智经纬CMS是一套基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持mysql、oracle、sqlserver等数据库。

强大、灵活的标签,用户自定义显示内容和显示方式完全生成全站静态页面,可自定义路径结构,全面提高页面访问速度基于目前流行的SpringMVC 及性能较Hibernate高的MyBatis二、课程适合的对象:Spring视频教程适合想要提升开发技能的Java开发人员,想要使用MyBatis+springMVC+Freemarker三、课程培养目标:1 熟练掌握并精通springMVC+MyBatis技术。

2 加强开发的内功修炼。

3 深入理解大型门户网站开发技术4 提供软件设计能力和软件开发能力,并在一定程度上增加项目管理经验。

6 掌握多个技术点,能够独立开发基于MyBatis+springMVC的大型门户网站四、培训定位:Spring视频教程适合于各个层次的Java开发人员,对于初级程序员来说,可以在短时间内迅速提高开发能力,掌握流行的技术,把握技术的发展脉络。

对于中高级程序员来说,本Spring视频教程可以在短时间内快速提升个人的开发能力,后期的架构和性能的课程,更是能够提升程序员的内功修炼,从而具有向架构师发展的能力。

五、课程讲解内容涵盖:1、项目介绍与需求分析2、基于powerDesigner的建模(概念模型物理模型)3 、适合MyBatis+springMVC的强大架构(多层架构)4、大型门户网站所用到的静态化技巧5、最新版本ckEditor3.6灵活使用6、基于javascript的经典树模型7、基于JQuery的AJAX应用8、MyBatis下使用树模型(数据结构)9、图片水印文字及水印图片操作技巧10、MyBatis下的经典物理删除技巧11、MyBatis下性能提升12、FreeMarker操作技巧13、基于junit测试驱动开发技术14、mybatis 缓存技术15、springMVC上传下载技巧16、基于MyBatis多表操作技巧六、Spring视频教程技术介绍:Spring3:著名的IOC框架,在本课程当中,除了使用Spring的IOC注入特性及Spring的MVC特性,还会重点阐述Spring与MyBatis的整合特性。

SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析

SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析

SpringBoot整合mybatis通⽤Mapper+⾃定义通⽤Mapper⽅法解析⽬录⾸先引⼊pom通⽤Mapper是tk.mybais中的也可以⽤代码进⾏配置数据库创建⼀张表member以及相关字段新建⼀个通⽤Mapper继承Mapper、MySqlMapper⽐较详细的⼀个⼊门⽰例举例我要写⼀个通⽤的单表分页在⾃⼰的BaseMapper写⼀个⽅法新建的BaseMapperProvider对上诉实现代码的描述返回后通⽤Mapper是怎么处理的最近公司在⽤的通⽤mapper,⾃⼰感兴趣,然后就来搭建了⼀个springboot项⽬试验通⽤mapper这个项⽬是国内的⼤神写的⼀个mybatis插件,⾥⾯有很多的增删改查⽅法官⽅解释的是通⽤mapper⽀持3.2.4以及以上的版本⾸先引⼊pom<!--Mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator</artifactId><version>1.3.5</version><type>pom</type></dependency><!--分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.2.1</version></dependency><!--tkmybatis --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>1.1.4</version></dependency>通⽤Mapper是tk.mybais中的配置⽂件application.yml:server:port: 8081# 下⾯是配置undertow作为服务器的参数undertow:# 设置IO线程数, 它主要执⾏⾮阻塞的任务,它们会负责多个连接, 默认设置每个CPU核⼼⼀个线程io-threads: 4# 阻塞任务线程池, 当执⾏类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载worker-threads: 20# 以下的配置会影响buffer,这些buffer会⽤于服务器连接的IO操作,有点类似netty的池化内存管理# 每块buffer的空间⼤⼩,越⼩的空间被利⽤越充分buffer-size: 1024# 是否分配的直接内存direct-buffers: truespring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.jdbc.Driverdriver-class-name: com.mysql.jdbc.Driverplatform: mysqlurl: jdbc:mysql://xxx.xxx.xxx.xxx:5306/miniprogram?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=falseusername: xxxxxpassword: xxxxxinitialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT1FROMDUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsefilters: stat,walllogSlowSql: trueredis:database: 1host: xxxxxport: xxxxpassword: xxxxtimeout: 10000activemq:queueName: mvp.queuetopicName: mvp.topic#账号密码user: userpassword: user#URL of the ActiveMQ broker.broker-url: tcp://localhost:61616in-memory: false#必须使⽤连接池pool:#启⽤连接池enabled: true#连接池最⼤连接数max-connections: 5#空闲的连接过期时间,默认为30秒idle-timeout: 30s# jedis: 有默认值,源码:RedisProperties# pool:# max-active:# max-idle:# max-wait:# min-idle:mybatis:typeAliasesPackage: com.pinyu.miniprogram.mysql.entitymapper-locations: classpath:mapper/**/*Mapper.xmlmapper:mappers: com.pinyu.miniprogram.mysql.mappers.BaseMapperidentity: mysql#logging.config:# classpath: test/log4j2_test.xmlxxxx请配置⾃⼰的数据库相关信息mapper:mappers: com.pinyu.miniprogram.mysql.mappers.BaseMapperidentity: mysqlctrl+⿏标点击com.pinyu.miniprogram.mysql.mappers.BaseMapper 进⼊源码可以看到 MapperProperties类是⼀个集合,意思这⾥可以mappers配置多个通⽤Mapper,可以是直接继承它已有的通⽤Mapper,也可以是定义⾃⼰需要的通⽤Mapper,⾃定义通⽤Mapper(代替它的Mapper)继承实现的⽅式不⼀样,下⾯会讲到也可以⽤代码进⾏配置/*** 通⽤mapper与分页插件的⼀些配置*/@Configurationpublic class MyBatisMapperScannerConfig {/*** 使⽤通⽤Mapper之前需要初始化的⼀些信息* 使⽤通⽤Mapper插件时请勿使⽤热加载,否则报错,插件作者后续应该会修复*/@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");mapperScannerConfigurer.setBasePackage("com.xx.xx.xx.mapper");//普通mapper的位置Properties properties = new Properties();properties.setProperty("mappers", BaseMapper.class.getName());//通⽤mapper的全名properties.setProperty("notEmpty", "false");properties.setProperty("IDENTITY", "MYSQL");//配置数据库⽅⾔mapperScannerConfigurer.setProperties(properties);return mapperScannerConfigurer;}/*** 配置mybatis的分页插件pageHelper*/@Beanpublic PageHelper pageHelper(){PageHelper pageHelper = new PageHelper();Properties properties = new Properties();//设置为true时,会将RowBounds第⼀个参数offset当成pageNum页码使⽤properties.setProperty("offsetAsPageNum","true");//置为true时,使⽤RowBounds分页会进⾏count查询properties.setProperty("rowBoundsWithCount","true");//合理化查询,启⽤合理化时,//如果pageNum<1会查询第⼀页,如果pageNum>pages会查询最后⼀页//未开启时如果pageNum<1或pageNum>pages会返回空数据properties.setProperty("reasonable","true");//配置mysql数据库的⽅⾔properties.setProperty("dialect","mysql");pageHelper.setProperties(properties);return pageHelper;}}mappers对应的通⽤mapper类,不要和⾃⼰其他业务的mapper放在⼀起,不要被@MapperScan扫描到,不然会报错,因为继承了通⽤mapper,会有很多相应的⽅法,被扫描到以后,mybatis发现没有⼀个xml配置⽂件或者相应⽅法没有进⾏实现,这时候就会报错。

MyBatis3整合Spring3项目依赖类库jar包之间的依赖

MyBatis3整合Spring3项目依赖类库jar包之间的依赖

12-5-6项目依赖项目依赖compile以下是这一项目的编译依赖列表。

编译和运行本应用需要这些依赖。

GroupId ArtifactId版本类型License备注org.mybatis mybatis 3.1.1jar The Apache Software License, Version 2.0No org.springframework spring-context 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework spring-core 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework spring-jdbc 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework spring-tx 3.1.1.RELEASE jar The Apache Software License, Version 2.0No org.springframework.batch spring-batch-core 2.1.8.RELEASE jar Apache 2.0Yestest以下是这一项目的测试依赖列表。

这些依赖仅仅在编译和运行本应用中的单元测试时需要。

GroupId ArtifactId版本类型Licensecglib cglib 2.2.2jar ASF 2.0com.mockrunner mockrunner-jdk1.5-j2ee1.30.4jar Mockrunner License, based on Apache Software License, version 1.1javax.transaction transaction-api 1.1jar-junit junit 4.10jar Common Public License Version 1.0log4j log4j 1.2.16jar The Apache Software License, Version 2.0ognl ognl 2.6.9jar BSD Licenseorg.hsqldb hsqldb 2.2.4jar HSQLDB License, a BSD open source licenseorg.springframework spring-test 3.1.1.RELEASE jar The Apache Software License, Version 2.0项目传递依赖以下是本项目的传递依赖列表。

springboot整合springsecurity与mybatis-plus的简单实现

springboot整合springsecurity与mybatis-plus的简单实现

springboot整合springsecurity与mybatis-plus的简单实现2、数据库使⽤Mysql,使⽤mybatis-plus框架3、⼤致结构图如下:控制器⽤HelloController就⾏,因为使⽤mybatis-plus代码⽣成的有⼀些没⽤的配置4、使⽤依赖如下:spring-boot⽤的2.1.18 RELEASE5、application.properties配置⽂件如下:# 数据库驱动:spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# 数据库连接地址spring.datasource.url=jdbc:mysql:///rog?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai # 数据库⽤户名&密码:ername=rootspring.datasource.password=root#⽇志输出,使⽤默认的控制台输出mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl#mybatis plus 设置mybatis-plus.mapper-locations=classpath*:com/xxx/mapper/xml/*Mapper.xml#配置别名扫描mybatis-plus.type-aliases-package=com.xxx.entity6、mysql数据库这⾥使⽤了3张表,分别是user、role、user_role7、entity-实体类⼤致如下:注意需要对应数据库的id⾃动递增8、mapper包因为使⽤的mabits-plus代码⽣成所以对应的mapper,所以⽣成好是继承了BaseMapper,如果⼿动写的话,就需要继承BaseMapper查询数据库当前请求登录的⽤户,获取他所拥有的所有权限9、service@Service()public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements IUsersService, UserDetailsService { @Autowiredprivate UsersMapper usersMapper;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {QueryWrapper<Users> wrapper = new QueryWrapper<>();wrapper.eq("user_name",username);//根据页⾯传的⽤户名查找数据库判断是否存在该⽤户Users users = usersMapper.selectOne(wrapper);if (users==null){throw new UsernameNotFoundException("⽤户不存在");}List<Role> roles = usersMapper.findRoles(users.getId());List<SimpleGrantedAuthority> authorities = new ArrayList<>();//遍历当前⽤户的⾓⾊集合组装权限for (Role role : roles) {authorities.add(new SimpleGrantedAuthority(role.getName()));}return new User(username,users.getPassword(),authorities);//如果⽤户没有⾓⾊会NullPointerException}}需要实现 UserDetailsService接⼝重写 loadUserByUsername⽅法,做了⼀个简单逻辑10、测试是否连接上了数据库新增⼀个⽤户,数据新增成功返回row>0,表⽰已经连接数据库成功11、controller层写⼀个简单的控制器12、config包下配置⼀下权限认证框架配置@Configuration@MapperScan("com.xxx.mapper")public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate UserDetailsService userDetailsService;@BeanPasswordEncoder passwordEncoder() {//使⽤明⽂密码:为了简单⽅便测试return NoOpPasswordEncoder.getInstance();//暗⽂密码:会⽤salt加密// return new BCryptPasswordEncoder();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception { //设置注⼊的⾃定义认证实现类userService,必须实现了UserDetailsService接⼝ erDetailsService(userDetailsService);}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests()//.antMatchers需要写在 .anyRequest()之前/* anyRequest 已经包含了其他请求了,在它之后如果还配置其他请求也没有任何意义。

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。

之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。

以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。

这次,先说说三大框架整合过程。

个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。

不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。

实践出真知。

(可通过图片水印查看博客地址)1、基本概念1.1、SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。

它是为了解决企业应用开发的复杂性而创建的。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

mybatis教案

mybatis教案

mybatis教案一、课程目标1. 了解 MyBatis 的基本概念和架构。

2. 掌握 MyBatis 的配置和映射文件的编写。

3. 学习使用MyBatis 进行数据库操作,包括增删改查等基本操作。

4. 理解 MyBatis 的缓存机制和分页功能。

5. 能够使用 MyBatis 集成 Spring 框架进行开发。

二、教学内容1. MyBatis 简介- MyBatis 的特点和优势。

- MyBatis 与其他 ORM 框架的比较。

2. MyBatis 架构- MyBatis 的核心组件介绍。

- MyBatis 的工作原理。

3. MyBatis 配置- MyBatis 配置文件的结构和常用配置项。

- 使用 XML 或注解方式配置数据源、映射文件等。

4. MyBatis 映射文件- 映射文件的作用和语法。

- 主键、列、结果集、关联映射等的配置。

5. MyBatis 数据库操作- 使用 MyBatis 进行增删改查操作的示例。

- 参数传递和动态 SQL 的使用。

6. MyBatis 缓存机制- 一级缓存和二级缓存的原理和配置。

- 缓存的使用场景和注意事项。

7. MyBatis 分页功能- 分页的原理和实现方式。

- 使用 MyBatis 分页插件的配置和使用。

8. MyBatis 与 Spring 整合- Spring 容器中管理 MyBatis 配置和映射文件。

- 使用 Spring 注解实现数据访问。

9. 综合实例- 通过一个完整的项目案例,演示MyBatis 在实际开发中的应用。

10. 总结与展望- 总结课程内容,回顾重点知识。

- 介绍 MyBatis 的发展趋势和应用前景。

三、教学方法1. 理论讲解:通过幻灯片、文档等形式,讲解 MyBatis 的相关概念、架构和原理。

2. 实例演示:通过实际项目案例,演示 MyBatis 的配置、映射文件编写和数据库操作。

3. 动手实践:安排学生在实验环境中进行实际操作,巩固所学知识。

Spring事务管理及与mybatis整合的事务管理

Spring事务管理及与mybatis整合的事务管理

数据访问事务处理in Spring+Mybatis3.0事务---保证了用户的每一次操作都是可靠的,即使出现了异常的访问,也不至于破坏后台数据的完整性;Java事务简介事务必须符合ISO/IEC所定制的ACID原则1)A(atomicity):原子性在事务执行的过程中,任何的失败就将导致事务的任何修改失效,2)C(consistency):一致性事务回滚时,事务所执行的内容必须恢复到初始状态,即事务执行前的状态3)I(isolation):隔离性事务执行过程中对数据的修改,在提交之前的数据对其他事务不可见4)D(durability):持久性已经提交的数据在事务执行失败时,数据的状态都是正确的.事务分类:全局事务(分布式事务):由应用服务器来管理(如JTA),同时可以用于多个事务性的资源;本地事务本地事务和资源相关,主要通过JDBC来实现在实际应用中,存在一种容器管理事务,容器事务主要是由javaEE应用服务器提供,容器事务大多给予JTA完成,事实上这是在容器中覆盖了JDBC和JTA事务.事务特性分析(use spring)TransactionDefinition 接口来定义事务属性。

Code:public interface TransactionDefinition{int getIsolationLevel();int getPropagationBehavior();int getTimeout();boolean isReadOnly();}事务机制a)事务隔离级别隔离级别是指若干个并发的事务之间的隔离程度。

TransactionDefinition 接口中定义了五个表示隔离级别的常量:TransactionDefinition.ISOLATION_DEFAULT(默认值):表示使用底层数据库的默认隔离级别。

对大部分数据库而言,通常这值就是TransactionDefinition.ISOLATION_READ_COMMITTED。

SpringBoot+Mybatis——适配支持各种各样数据库的方法

SpringBoot+Mybatis——适配支持各种各样数据库的方法

SpringBoot+Mybatis——适配⽀持各种各样数据库的⽅法使⽤mybatis的databaseId属性直接配置多数据库⽀持注意事项:1、本⽂针对的是多数据库切换,⽽⾮多数据源切换;2、本⽂所使⽤的⽅法是在配置⽂件中配置好需要使⽤的数据库,⽽不是在项⽬运⾏以后随时切换,若要切换数据库,需要修改配置⽂件并重启项⽬。

⼤家阅读本⽂前请注意以上两条事项,确定本⽂内容是否符合你的功能要求,再决定是否继续阅读本⽂。

接下来进⼊正题,⾸先是数据库配置,直接按照常规的配法就可以了,例如:spring.datasource.url=jdbc:mysql://localhost:3306/demoername=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver⽽要想使⽤databaseId的话,需要增加⼀个bean的配置,如下:import java.util.Properties;import org.apache.ibatis.mapping.DatabaseIdProvider;import org.apache.ibatis.mapping.VendorDatabaseIdProvider;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class BeanConfig {@Beanpublic DatabaseIdProvider getDatabaseIdProvider() {DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();Properties p = new Properties();p.setProperty("DM DBMS", "dm7");p.setProperty("MySQL", "mysql");databaseIdProvider.setProperties(p);return databaseIdProvider;}}在这段代码中,给Properties设置了两个对象,对应着两种数据库,⼀个是达梦7,⼀个是mysql。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
根据整合步骤实现Spring和MyBatis的整合 查询出全部供应商数据 直接注入SqlSessionTemplate实现
完成时间:20分钟
7/33
学员操作—根据名称查询供应商信息 练习 需求说明
在上一练习基础上增加按照供应商名称模糊查询供应商 信息的功能
要求:直接注入SqlSessionTemplate实现
MapperFactoryBean
MapperScannerConfigurer递归扫描基准包下所有接口,若它们 在SQL映射文件中定义过,则动态注册为MapperFactoryBean, 如此即可批量产生映射器实现类
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
分析 配置数据源 配置SqlSessionFactoryBean
使用SqlSessionTemplate实现数据库的操作
编写业务逻辑代码并测试
演示示例1:实现Spring对MyBatis的整合
6/33
学员操作—实现供应商表的查询操作 练习 需求说明
在超市订单系统中实现供应商表的查询操作
<property name="basePackage" value="cn.smbms.dao" />
</bean>
指定扫描的基准包
演示示例3:使用MapperScannerConfigurer注入映射器
11/33
小结
MapperScannerConfigurer 与@Autowired注解或@Resource注解配合 使用,自动创建映射器实现并注入给业务组件,能够最大限度地减 少DAO组件与业务组件的编码和配置工作
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired // 或 @Resource
private UserMapper userMapper;
//……代码省略
}
<!-- 省略数据源、 SqlSessionFactoryBean的相关配置 -->
MapperFactoryBean
根据指定Mapper接口生成Bean实例
MapperScannerConfigurer
根据指定包批量扫描Mapper接口并生成实例
4/33
实现Spring和MyBatis整合5-2 Spring和MyBatis的整合步骤
建立Web工程,加入Spring和MyBatis的有关JAR 建立开发目录结构,创建实体类
指定映射器,只能是接口类型
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="erMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</映bea射n>器对应的SQL映射文件与映射 ! 器的类路径相同,该映射文件可以
注入SqlSessionFactory以提供 SqlSessionTemplate实例
自动被MapperFactoryBean解析
MyBatis与Spring的整合
本章任务 搭建Spring+MyBatis的集成环境 实现用户信息的查询和添加功能 实现供应商信息的增删改查功能 实现订单信息查询功能
2/33
本章目标 掌握Spring与MyBatis的集成 掌握使用SqlSessionTemplate实现整合 掌握使用MapperFactoryBean实现整合 掌握Spring的事务切面实现声明式事务处理 掌握使用注解实现声明式事务处理
演示示例2:使用MapperFactor y B ea n 注入 映射器
10/33
实现Spring和MyBatis整合5-5
若映射器很多的话,相应的配置项也会很多,如何简化配置工作量?
问题
MapperScannerConfigurer
分析
自动扫描指定包下的Mapper接口,并将它们直接注册为
<context:component-scan base-package="cn.smbms.service" />
12/33
学员操作—实现订单表的查询操作
练习 需求说明
在超市订单系统中实现按条件查询订单表,查询条件如下
3/33
实现Spring和MyBatis整合5-1
要在Spring中使用MyBatis,需要在Spring的配置文件 中定义一些类
SqlSessionFactoryBean
为整合应用提供SqlSession对象资源
SqlSessionTemplate
负责管理MyBatis的SqlSession,调用SQL映射语句,实现对 数据库的访问
<!-- 配置DAO -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.smbms.dao" />
</bean>
<!-- 配置扫描注解定义的业务Bean -->
创建数据访问接口
创建数据访问接口的实现类
配置SQL映射语句文件
配置MyBatis应用配置文件
配置Spring应用配置文件
5/33
实现Spring和MyBatis整合5-3
需求说明
实现Spring整合MyBatis 使用SqlSessionTemplate实现根据条件(用户名称、角色
ID)查询用户列表
完成时间:15分钟
8/33
共性问题集中讲解 常见问题及解决办法 代码规范问题 调试技巧
共性问题集中讲解
9/33
实现Spring和MyBatis整合5-4
采用数据映射器(MapperFactoryBean)的方式完成 对数据库操作
根据Mapper接口获取Mapper对象,它封装了原有的
பைடு நூலகம்
SqlSession.getMapper()功能的实现
相关文档
最新文档