0%

方案一:传统的dao方式开发

需要自己开发dao层,编写sql语句

  1. 创建项目,引入依赖
    需要注意的是需要导入mybatis和spring整合的包mybatis-spring
    阅读全文 »

SpringMVC工作流程

阅读全文 »

1. ==和equals的区别

  1. 对于基本数据类型,“==”比较的是值是否相等;对于引用数据类型,“==”比较的是内存地址是否相等
  2. equals本质上来说是使用了==作为其底层的实现,但是java中很多类都对equals做了重写,使其对值进行判断

重写equals可以通过判断以下几点实现:

  • 检查是否为同一个对象的引用,如果是直接返回true
  • 检查是否是同一类型,不是直接返回false
  • 将Object进行转型
  • 判断每个关键域是否相等
阅读全文 »

一对一

在类中添加需要关联实体类的一个类属性

public class Blogs implements Serializable {
    private Integer id;

    private String title;

    //private Integer authorId;

    private Authors authors;

    private Byte featured;

    private String style;
阅读全文 »

一级缓存

MyuBatis一级缓存默认开启,是session级别的缓存。当在同一个session范围内执行查询的时候,如果执行相同的查询,那么第二次查询会从缓存中获取数据

@Test
public void testSelectBlogsCacheLevelOne1(){
    SqlSession session = MyBatisUtil.sqlSession();
    BlogsMapper blogsMapper = session.getMapper(BlogsMapper.class);

    Blogs blog1 = blogsMapper.selectByPrimaryKey(1);
    System.out.println("结果已查询"+blog1);
    Blogs blog2 = blogsMapper.selectByPrimaryKey(1);
    System.out.println("结果已查询:从缓存中获取数据"+blog2);

    session.close();
    System.out.println("session关闭");
}
阅读全文 »

MyBatis Generator

MyBatis Generator是官方提供的逆向工程,通过xml配置文件和java程序,能够用于根据数据库表结构自动生成mapper.xml,mapper.java以及pojo类
生成的mapper具备单表的增删改查功能

缺陷:只能进行单表操作

使用前需要先导入依赖

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.7</version>
</dependency>
阅读全文 »

MyBatis 持久层

  • 对JDBC的封装
  • 将sql语句放在映射文件中(xml)
  • 自动将输入参数映射到sql语句的动态参数上
  • 自动将sql语句执行的结果映射成java对象
阅读全文 »

使用JdbcTemplate

需要导入的jar包:
springJdbc需要的依赖

直接连接c3p0

public class TestJdbcTemplate {

    @Test
    public void testSave1() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/spring");
        dataSource.setUser("root");
        dataSource.setPassword("123");

        JdbcTemplate jt = new JdbcTemplate(dataSource);
        String sql = "INSERT INTO users(name,age) VALUES (?,?)";
        jt.update(sql,"xiaoming",6);
    }
}
阅读全文 »

相关概念

AOP是面向切面编程的一种设计思想,Sring的IOc容器不需要依赖于SpringAOP,主要有一下几个相关术语

  • 连接点(Joinpoint):指能够被拦截的点,在spring中,这些点指的都是方法,因为spring只支持方法类型的连接点,相当于目标对象类中的所有方法(可以被切入的点)
  • 切入点(Pointcut):指我们要对哪些连接点进行拦截的定义(已经切入的点)
  • 通知/增强(Advice):指拦截到连接点之后要做的事情就是通知,可以分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
  • 引介(Introduction):引介是一种特殊的通知,在不修改类代码的情况下,Introduction可以在运行期为类动态的添加一些方法和Field
  • 切面(Aspect):切入点和通知(引介)的结合
  • 目标对象(Target):代理的目标对象
  • 代理(Proxy):一个类被AOP织入增强后,就产生一个结果代理类
  • 织入(Weaving):把增强的功能添加到目标对象来创建新的代理对象的过程,spring采用动态代理织入
阅读全文 »