SSM框架基础知识

spring+springmvc+mybatis

  • SSM
    1. spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
    2. SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制
    3. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架

1. spring框架

  1. 核心组件:版本4.3.12
    1. spring-core
    2. spring-context
    3. spring-beans
    4. spring-expression
      spring

2. spring框架核心组件

  1. core,beans,context,spEL(核心,Bean,上下文,表达式)
  2. 在maven项目中添加四个组件的依赖
  3. 创建有关联关系的bean
    java OOP中bean之间的关系(UML:泛化,实现,依赖,关联(聚合,组合))
    1. 泛化:子类继承父类
    2. 实现:接口和实现类
    3. 依赖:一类中的方法参数类型是另一个类
    4. 关联:聚合和合成
      1. 聚合:关联关系是可以分割的
      2. 合成:关联关系是不可分割的
      3. 在项目中添加spring核心配置文件
 //文件名application-context.xml(文件名任意,建议放入main/resources文件夹)
 //复制抬头声明到application-context.xml中
       <beans     
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd"
        </beans>
  • 主要元素<bean>包括:
    1. <bean id="ybook" class="demo.YellowBook"> 负责管理bean,实例化bean
      id用于唯一标识,class用于指定bean全路径
    2. <bean><property name="bname" value="曹雪芹">
      name找寻bean中属性对应的set方法,value赋值可以用于简单类型(8种基本数据类型+字符串),属于单例模式,只产生一块内存
    3. <constructor-arg name="color" value="绿">
      constructor-arg用于注入构造参数的值,name表示注入的属性名称,value用于注入简单类型的值
    4. spring测试包以注解方式引入spring框架中
      @RunWith(SpringJUnit4ClassRunner.class)Junit注解
      @ContextConfiguration({"/app2.xml","..."})引入spring配置文件
      @Autowired在类中,表示按当前类的类型在spring中查询已经实例化的bean
      @Qualifier("p")在@Autowired之后,表示指定spring中的bean的name,可省略
      @Test同junit用法

3. Spring生命周期

  1. scope表示bean的创建方式,取值为:
    1. singleton,默认,单例模式
    2. prototype,原型模式,为每次请求创建新的bean实例
    3. request,开发web时bean的生命周期为一次请求
    4. session,同上,一次会话
    5. portal,web项目中spring提供的portal组件(门户级别项目)
  2. autowire表示自动注入的属性,取值为:
    1. autowire表示自动注入的属性值
    2. no,默认,不自动注入
    3. byName,按属性名自动注入
    4. byType,按类型自动注入
    5. constructor,对应构造方法按类型自动注入
  3. 创建新的<bean>
    <bean id="tea" class="demo04.TeaA"></bean>
    id对应name,class对应type
  4. destroy-method表示销毁的方法,即结束生命周期

4. spring注解与xml结合的方式注入

  1. 加载spring上下文环境,首先加载spring配置文件
  2. 如果配置是基于注解,需要对原有xml进行修改,添加两部分内容
    1. 添加context的验证,是注解配置的基础
      xmlns:context=”http://www.springframework.org/schema/context”
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
    2. 添加到验证指定部分,与beans对应的位置,复制后修改为context
    3. 添加注解所在包(如控制器)的扫描
      <context:component-scan base-package="controller包名"/>
      包名支持多个包和子包
  3. 在扫描包所在的类上添加对应的注解
    @Component("别名")如果不写别名,默认加载为所在类的类名(字母小写)
    1. 在类中添加@Value("属性的值")到属性上行,相当于为属性赋值省却了setter方法
    2. 通过@Autowired按类型方式完成注入,类型可以为自定义bean
    3. 由于添加注解所在包扫描的时候写的是根包名,所以可以通过@Component加载多个包,通过spring完成关联

5. spring aop

  1. 如何记录日志
    java提供记录日志的组件,常用第三方日志组件
  2. log4j
    1. 在maven中添加log4j组件(版本号1.2.17)
    2. 在src目录下创建log4j对应配置文件,名称log4j.properties
    3. Logger log=Logger.getLogger(Book.class);实例化日志对象
    4. 可以生成.log日志文件导出
  3. spring aop理论基础
    1. (Aspect-Oriented Programming)AOP面向切面编程
    2. java代理模式,为了在被代理方法上下添加自定义代码
      1. 静态代理
      2. 动态代理
  4. jdk提供动态代理
    1. 实现被代理对象操作模板(接口),实现该接口完成被代理类;
    2. jdk1.0提供的动态代理,其核心是实现被代理对象方法的拦截
    3. 通过代理对象创建被代理对象,返回接口后,执行接口中的方法,完成代理
  5. cglib动态代理(需要第三方组件支持)
    不需要被代理类提供接口,原理是通过反射修改被代理对象内存的字节码,spring使用该组件

6. springMVC

  • MVC=(Model+View+Controller)(模型层+视图层+控制层)
    1. 模型层: 提供数据,如实体bean(po,包含get/set方法)
    2. 视图层: 提供展示,如html5,jsp
    3. 控制层: 接收客户端/浏览器传来的请求并转发给业务层处理,并跳转到新的视图层,如controller
    4. 业务层: service,负责处理控制器转发来的数据,通过调用实体bean,连接数据库等进行处理
      配置文件: 放置xml文件,用于映射sql操作等
  • spring mvc框架需要两部分的依赖
    1. spring web库
    2. spring mvc库
  • spring mvc概述
    spring mvc框架是围绕DispatcherServlet(前置控制器)开发的,
    1. 它负责从自定义的spring mvc配置文件中读取映射信息,映射信息包含(处理请求映射的句柄,视图处理模板等)
    2. 根据自定义配置文件映射句柄分发请求并调用指定处理模块(Model)
    3. 按照视图处理模板跳转到指定的视图

7. spring mvc开发详细步骤

  1. 添加spring的web和mvc依赖库
  2. 在当前web项目中添加spring mvc及spring web框架
    1. 修改/WEB-INF/web.xml文件,添加spring web配置和spring mvc核心DispatcherServlet映射

DispatcherServlet配置:

  1. 负责当前用户发起url请求,通过其核心分发器启动spring mvc
    1. 在web.xml中配置servlet使将url-pattern赋值为”/”表示所有的网址访问都调用MVC,在servlet-class赋值DispatcherServlet的全路径org.springframework.web.servlet.DispatcherServlet
    2. 配置替换默认spring-mvc配置文件的位置默认位置:WEB-INF/springmvc-servlet.xml
      contextConfigLocation对应springmvc自定义配置文件的路径,要求从WEB-INF/目录出发”/WEB-INF/classes/mvc/abc.xml”或者classpath:相当于(/WEB-INF/classes/)
  2. 任何项目不会孤立存在,需要与其他部分(业务bean,持久层)结合,需要配置spring web组合和其他部分进行结合
  3. 创建配置文件app-mvc.xml(resources文件夹下)
    1. 修改spring抬头context改为mvc下载规范
    2. 在web.xml中初始化加载app-mvc.xml配置文件

      contextConfigLocation
      classpath:mvc/app-*.xml
    3. 配置自定义响应请求的控制器bean,通过spring2.5以后版本普遍支持的注解方式,上下文的组件包的扫描
      <context:component-scan base-package="com.demo.controller"/>导入包
    4. 配置资源跳转的统一模板
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
        //prefix前缀:统一规定跳转后页面的目录"/"表示在WEB-INF/下找网页
        //suffix后缀:统一规定跳转页面的扩展名
  1. 自定义控制器
    1. 创建一个index.jsp(需加载jsp和servlet组件)
    2. 创建一个普通类,注解@Controller标识其为控制器
    3. 响应客户端请求@RequestMapping(“/hello”)表示网址为/hello时调用下边的方法,该注解需跟着方法,返回类型分为void,String,ModelAndView三种
      1. void: 表示转发,转发到注解@RequestMapping(“/hello”)的hello.jsp
      2. String: 普通情况则跳转到该字符串.jsp

8. 过滤器

  1. 不常用创建一个普通类,实现Filter接口,重写doFilter方法,在web项目中称为过滤器
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    FilterChain能够识别请求的目标路径,通过这个对象能将请求继续发送
  2. 重定向实现拦截
    HttpServletResponse r=(HttpServletResponse) response;
    r.sendRedirect(“”);
  3. 通过chain记住请求目标路径,继续请求发送
    HttpServletRequest x=(HttpServletRequest) request;
    x.setCharacterEncoding(“UTF-8”);//在重新发送之前可以进行修改中文字符集
    chain.doFilter(x, r);
  4. 常用在web.xml中添加<filter>,可以通过spring自带的encoding过滤器在web.xml中修改过滤器的字符集
        <filter>
        <filter-name>x</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
            </filter>
            <filter-mapping>
                <filter-name>x</filter-name>
                <servlet-name>springmvc</servlet-name>
            </filter-mapping>

9. springmvc开发流程

  1. 添加依赖库
  2. 修改WEB-INF/web.xml,添加springMVC框架,添加springmvc核心控制器DispatcherServlet.为了将springmvc与相关业务Bean结合,需要添加添加spring配置信息
  3. 添加springmvc和spring配置文件
  4. 手工添加mvc中视图,自定义的控制器

10. springmvc工作原理

  1. 由客户端发送请求到前端控制器(DispatcherServlet),读取springmvc配置文件将请求的url按配置信息分发指定的自定义控制器(javaBean,@Controller,@RequestMapping)
  2. 自定义控制器调用业务bean(spring容器处理),存储业务数据(模型数据),自定义控制器的处理方法返回封装了模型数据和跳转URL对象,发送给前端控制器
  3. 前端控制器,安装springmvc中视图解析配置,安装自定义控制器返回的url路径,springmvc使用视图模板封装模型数据和跳转信息,传递给前端控制器
  4. 前端控制器通过节点视图模板对象,进行跳转到指定视图view

11. springmvc参数处理

  1. 从web容器中接收上下文环境对象
    HttpServletRequest,HttpServletResponse,HttpSession
  2. 接收单值进行自动类型的转换
    @RequestParam在参数前用于处理单值
  3. 自动封装POJO(简单的java对象)
  4. 通过springmvc提供存储状态对象
    1. 传统方式: HttpServletRequest,HttpSession
    2. springmvc方式: Model,Map(存储范围request)
  5. springmvc接收客户端发送的JSON格式数据,使用注解
    @RequestBody 在参数前用于处理JSON

12. springmvc+spring结合的基本实现

  1. 案例:登录,验证用户名密码是否符合要求,符合则跳转到欢迎页面,否则跳转回登录页面
    1. 添加依赖库
    2. 修改WEB-INF/web.xml
      • 需要添加spring配置,<context-param>web环境启动时配置上下文的初始化参数信息
       <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:cfg/app-*.xml</param-value>
        </context-param>
  • 需要srpingweb组件与spring上下文结合,通过配置监听器<listener>
       <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
  1. 添加实体bean,用于提供用户名密码的get/set
  2. 添加业务Bean,用于验证用户传递信息是否能够登陆
    需要添加到spring的上下文环境中,创建一个类添加注解@Service声明为业务Bean
  3. 添加开发视图创建登陆.jsp和欢迎.jsp
  4. 添加控制器
    通过注解@Controller创建控制器类

13. springmvc控制器方法的返回类型

  1. 返回void,转发到与@RequestMapping的url上
  2. 返回普通String类型,转发到返回字符串上
  3. 返回redirect类型,重定向到关键字redirect:目标上
    return "redirect:path"
  4. 返回forward类型,转发到关键字forwadrd:目标上
    return "forward:path"
  5. 返回ModelAndView类型,转发到new ModelAndView(目标)上
    必须经过new创建对象,可以通过对象的addObject方法存入key-value对(String,Object),存储范围为request
    ModelAndView m=new ModelAndView(“suc”);
    m.addObject(“String”,Object);
  6. 返回JSON类型,即ajax

14. spring+持久层框架(mybatis)

  • spring(核心)+spring-dao(提供事务管理)+第三方框架(hibernate,mybatis)
  • springmvc(web前端和控制器)+spring(结合控制器调用业务Bean,管理生命周期)+第三方持久层框架(hibernate,mybatis)
  • 简称ssm或ssh

15. spring(core+dao)+mybatis结合

  1. 添加依赖库(spring基础库(core,context,beans,expression)+spring-aop(消除重复代码)+string-aop依赖包+spring-JDBC连接的jar(为持久层提供事务操作)+mybatis依赖库+JDBC连接的jar+mybatis-spring库)
  2. 提供spring和mybatis结合的配置文件(针对持久层操作)
  3. 提供数据源(连接池)连接池的分类:
    1. 托管环境: 使用应用服务器环境建立,管理,对外提供JNDI(java命名目录接口),在容器环境下运行的组件(jsp,servlet等),tomcat,jboss,weblogic,websphere
    2. 非托管环境: druid连接池(常用),dbcp,c3p0
    3. 配置映射文件xml
      1. 加载DruidDataSource(加载该类全路径),配置destroy-method属性,当连接关闭时,连接池会负责回收资源
        <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"/>
      2. 加载本地属性文件(db.properties)
        <context:property-placeholder location="db.properties" />
    4. 通过mybatis-spring组件创建SqlSessionFactoryBean(添加新的bean)
  4. 配置属性:dataSource,typeAliasesPackage,mapperLocations
       <property name="dataSource" ref="ds"/>
        <property name="typeAliasesPackage" value="com.sm.po"/>
        <property name="mapperLocations" value="classpath:com/sm/mapper/*.xml"/>
  1. 配置mybatis用于执行sql语句的映射文件
       <?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">
  1. 在该映射文件中添加<mapper>在其中添加sql操作
    1. 依次关联SqlSessionTemplate向上关联SqlSessionFactoryBean向上关联DruidDataSource
  2. 测试
    测试类需要添加spring注解junit和context两个
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({“/app-dao.xml”})
  3. 业务(事务的处理)
  4. 应用项目中在业务层添加事务
    1. 为了支持spring的事务操作,在xml映射文件中添加tx模块
    2. 扫描业务Bean包(service)
    3. 添加spring-jdbc提供的事务管理器,用于产生事务对象
    4. spring-jdbc提供tx标签下的advice定义事务通知对象,属性包括id(唯一标识),transaction-manager(引用已定义的事务对象Bean的标识)
  5. 事务的属性(tx:attributes):
    1. tx:method对应指定方法名称,在对应方法上指定事务的特性
    2. 属性name=”方法名”(save*,update*,delete*),propagation=”required”事务对象有就用没就新建,rollback-for=”exception”报错时回滚
    3. 为查询方法单独设置,name=”select*”,propagation=”supports”,read-only=”true”只读
  6. aop的编织,将事务属性和指定表达式的类中的方法进行关联
    1. aop:config下的aop:advisor用于事务属性和切面点表达式的结合
    2. 属性pointcut=”execution(* com.ssm...(..)”)表示任意子包下任意类的任意方法,advice-ref=”事务tx:advice的id”

16. ssm+数据库

  1. 在mysql中创建数据库
  2. 在maven中加载mybatis插件MyBatis Generator,用于将数据库表在eclipse中生成实体类po
  3. 在MyBatis Generator网站下载的generatorConfig.xml文件,放入项目src/main/resources目录中并修改相关字段
    1. classPathEntry: jdbc包的路径
    2. jdbcConnection: 连接的数据库信息
    3. javaModelGenerator: 对应生成表的实体类model包名和路径(src\main\java)
    4. sqlMapGenerator: 对应生成xml文件的位置mapper包名和路径
    5. javaClientGenerator: 生成操作接口和辅助类dao包名和路径
    6. table: 映射物理表,输入数据库名,表名,实体类名
  4. 通过maven添加mybatis-generator-core依赖和mybatis-Generator-maven-plugin插件
  5. 将直连jdbc的库文件(.m2中mysql文件下的jar文件),mysql-connector-java-5.1.38.jar拷贝到项目根目录下
  6. 配置maven运行命令,在项目中maven build命令中添加Goals:mybatis-generator:generate -e
  7. 运行后显示Build Success表示成功,会生成dao,mapper,po的包及相应类
  8. 在app-dao.xml中添加新的bean用于扫描生成sql操作所依赖的包MapperScannerConfigurer,在该包源代码中提供了注释掉的bean标签,复制即可,依次修改两个属性的值为dao包名和SqlSessionFactoryBean的bean id
  9. 将接口和spring上下文结合,在自动生成的接口上加入注解:@Repository,用于定义spring中mvc开发模式中的持久层bean,由mybatis-spring组件将该接口的实现类在spring上下文中进行注入,通过该接口即可进行引用

17. springmvc补充

  1. 支持RESTful风格的url
  2. @RequestMapping
    用于映射url请求,也可以完成模块的划分,写在类的声明上,调用类内方法的时候都会先加入类的声明,即分层url=/user/ok(user写在类上,ok写在类方法上),但方法返回字符串时会无视类的声明以字符串为准
       @Controller
        @RequestMapping("/user")
        public class UserAction {
            @RequestMapping("/ok")
            public void ok() {//跳转到/user/ok
                System.out.println("ok...");
            }
            @RequestMapping("/add")
            public String add() {//跳转到/suc
                System.out.println("add...");
                return "suc";
            }
        }
  1. RESTful风格包含两部分内容
    1. ant风格形式
    2. 通过客户端发送请求的方式不同在控制器执行不同的代码
    3. method取值有(PUT,DELETE,GET,POST)
      1. get请求,对应查询在form中默认
      2. post请求,对应插入在form中添加method=”post”
        put和delete请求要添加过滤器org.springframework.web.filter.HiddenHttpMethodFilter
      3. put请求,对应更新在form中以post方式提交,并添加<input type="hidden" name="_method" value="put"
      4. delete请求,对应删除同put请求方式,以下是控制器中的delete写法,可以通过地址栏/数值传入id进行按id删除的操作,将delete换成get,post,put则处理其他方式的请求
    @RequestMapping(value="/{xid}",method=RequestMethod.DELETE)
        public String delete(@PathVariable(name="xid") int id) {
            System.out.println("删除id商品"+id);
            return "suc";
        }
  • 支持Ant风格的url
    1. @PathVariable在参数前注解,其中name=”路径变量”
    2. 路径变量可以在注解中加入,这样可以把地址栏”/user/delete/110”传的值通过String参数path接过来,path=110
       @RequestMapping("/delete/{papa}")
        public String pa(@PathVariable(name="papa")String path) {
            System.out.println("path:"+path);
            return "suc";
        }

springmvc中的上传

  • 支持上传二进制文件,需要:
    1. 客户端必须以post方式提交form表单,在form的enctype属性中设置multipart/form-data(支持上传二进制)
    2. 在springmvc配置文件中设置id名称multipartResolver的bean,类是org.springframework.web.multipart.commons.CommonsMultipartResolver,在springmvc配置中可以设置上传的设置
    3. 上传的二进制文件对应MultipartFile接口所声明的属性,其实现类是CommonsMultipartFile
    4. 生成一个实体类,用于封装name和upload(上传组件,类型为MultipartFile),生成get/set方法
    5. 在jsp中form表单下添加两个input,一个为name,一个为upload(类型为file),表单提交到控制器
    6. 在控制器中生成方法接收创建的实体类对象,可以得到输入流
    7. 添加依赖
    8. 通过IOUtils.copy(输入流,输出流),完成文件上传

18. springmvc中的ajax阿贾克斯技术

  1. 通过客户端JS事件以异步的方式访问后台服务,并且以局部刷新的方式更新服务端所返回的信息
  2. 前端框架
    1. 以简化库的形式出现,jQuery(简化javasricpt的开发)
    2. 通过bootstrap加载css样式和js脚本到.jsp文件中
       <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script type="text/javascript" src="js/bootstrap.min.js"></script>
  1. 编写css样式
    <style type="text/css">
  2. 接收客户端发送的get请求:
    $.get('向服务器请求的url?参数名=值&参数2=值',function(服务器返回数据的索引,返回的json格式/json数组格式的数据)
  3. 编写html5内容和js脚本,利用ajax技术完成异步访问后台服务和局部刷新功能
    <script type="text/javascript">
    $(function(){})表示window.onload事件,即资源加载完毕发生该事件,必须在该事件内写jquery
  4. 如果想用$(this)调用当前函数的话,必须满足事件.函数,独立函数无法使用该jquery提供的方法
    1. 通过创建并遍历json数组,生成新的html元素(包含传递的内容)
    2. 通过$(html元素).html(遍历后的内容)将新的内容写入回html5页面
  5. 添加jackson依赖库,用于springmvc自动封装java中的集合和实体类并自动转换成json格式的对象或数组传递给客户端
    jackson-databind,jackson-core,jackson-annotations
  6. 在springmvc中编写各层
    1. 在生成的dao包下的接口上添加注解@Repository转化为抽象类
    2. 在service下创建业务类添加注解@Service
      注入dao操作接口,调用其sql操作的相关方法并返回相应值
    3. 在controller下创建控制器类添加注解@Controller
      注入service业务Bean,生成url映射,调用service的方法返回相应值,并通过在方法上添加注解@ResponseBody(方法结束后不跳转url)完成java集合向json格式的自动封装

19. mybatis

  1. 简介
    • MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。
    • MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。
    • 源码被托管到github上
  2. 持久层技术性能
    • 数据库存储过程>jdbc>mybatis>hibernate
    • 大数据: 处理的数据并非来自数据库(半结构化)

案例1(查询)

  1. 在maven中,添加mybatis依赖包,必备连接数据库的jar包(mysql-connector-java)和mybatis对应的jar包(mybatis),可以下载源代码
  2. 主配置文件,配置XML,必备(环境配置,映射器)
    默认文件名:mybatis-config.xml
    环境配置:包含连接数据库(dataSource),事务功能(environments)
    事务操作类型:type=””
    1. JDBC,表示代码中手工操作事务commit,rollback.这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域.
    2. MANAGED,这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期.
  3. 数据源类型:type=””
    1. UNPOOLED,表示不使用任何连接池连接数据库
    2. POOLED,表示使用mybatis提供的连接池
    3. JNDI,表示使用外部web容器提供的连接池
  4. 操作映射的文件路径:包含执行具体的sql语句,封装操作(mappers)
  5. mapper属性:
    1. resource,对应操作映射的xml配置文件全路径
      resource="com/demo/mapper/tabuser.mapper.xml"
  6. 操作映射对象
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");读取主配置文件返回读取流
  7. 依次获取到sqlsession用于执行sql语句
    1. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
    2. SqlSessionFactory ssf = ssfb.build(is);
    3. SqlSession ss = ssf.openSession();
    4. 执行映射方法返回结果
      List<Tabuser> list = ss.selectList("com.tabuser.mm.findall");
      for (Tabuser t : list){t.getUname}
  8. 配置mybatis日志
    1. 修改主配置文件mybatis-config.xml,配置properties属性文件
      <properties resource="db.properties"></properties>
      属性的用法value="${属性文件的键}"
    2. 修改主配置文件mybatis-config.xml,配置typeAliases别名
      <package name="com.demo.po" />可以省略类的包名,只写该包下的类
      <typeAlias type="com.demo.po.Tabuser" alias="x"/>将一个类的全路径改为任意名x
    3. 修改主配置文件mybatis-config.xml,配置settings生成日志
      <setting name="logImpl" value="STDOUT_LOGGING"/>标准日志,在控制台会生成完整的日志

mybatis工作流

  1. 读取mybatis配置文件返回读取流
  2. 创建SqlSessionFactoryBean
  3. 得到SqlSessionFactory
  4. 得到SqlSession
  5. 配置自定义sql映射文件执行CRUD
  6. 手工提交事务
  7. 关闭资源

猜你喜欢

转载自blog.csdn.net/wxfghy/article/details/80974575
今日推荐