mybatis -- 8、ssm整合的简单开发

1、三大框架整合(ssm整合)

    在老期的项目中,一般都是使用ssm项目做开发的,虽然现在的主流开发是springboot来做开发,但是ssm的基本整合还是需要掌握的。

1、导入pom文件

(直接从之前所用的项目中赋值过来)

<dependencies>
======================================= springAOP ==========================================
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/cglib/cglib -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/aopalliance/aopalliance -->
    <dependency>
        <groupId>aopalliance</groupId>
        <artifactId>aopalliance</artifactId>
        <version>1.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.2.3.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.21</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.48</version>
    </dependency>
======================================= springMVC ==========================================
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <!-- &lt;!&ndash; https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api &ndash;&gt;
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
             <version>2.5</version>
             <scope>provided</scope>
         </dependency>-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.10.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind 
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.10.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
======================================= mybatis ============================================
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.caches</groupId>
            <artifactId>mybatis-ehcache</artifactId>
            <version>1.2.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.0-alpha1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>2.0.0-alpha1</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.4</version>
        </dependency>

    </dependencies>
</project>

2、编写各个框架的配置文件

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
//spring相关配置
    <listener监听>
        <listener-class>
org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param上下文参数>
        <param-name>contextConfigLocation上下文配置地方</param-name>
        <param-value>classpath:spring.xml</param-value>
    </context-param>

//springMVC相关配置
    <servlet控制器>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param初始化参数>
            <param-name>contextConfigLocation上下文配置地方</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup启动时加载>1</load-on-startup>
    </servlet>
    <servlet-mapping控制器映射>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

//配置编码过滤器
    <filter>
        <filter-name>CharacterEncoding字符编码</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>forceEncoding强迫编码</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping过滤器映射>
        <filter-name>CharacterEncoding字符编码</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
//配置REST过滤器
    <filter过滤器>
        <filter-name>rest休眠</filter-name>
        <filter-class>
org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping过滤器映射>
        <filter-name>rest休眠</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc 
https://www.springframework.org/schema/mvc/spring-mvc.xsd">

//定义扫描的包
use-default-filters使用默认过滤器:默认的扫描会包含@Controller控制器,@Service服务,@Component组件,@Repository仓库,我们再进行配置的时候需要扫描这么多组件
===============================================================================
//这里只扫描@Controller控制器这个注解
    <context:component-scan组件扫描 base-package基本组件="com.mashibing" use-default-filters使用默认过滤器="false">
        <context:include-filter包含过滤器 type="annotation注解" expression表达式="org.springframework.stereotype.Controller"/>
    </context:component-scan>
===============================================================================
//请求静态资源
    <mvc:default-servlet-handler默认控制器处理></mvc:default-servlet-handler>
//请求动态资源
    <mvc:annotation-driven注解开车></mvc:annotation-driven>
===============================================================================
//设置视图管理器
    <bean豆 class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/page/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<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"  
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
===============================================================================
//定义扫描的包
//Spring除了控制器不扫描,其他的组件都扫描,包括service,component等
    <context:component-scan组件扫描 base-package基本组件="com.mashibing" use-default-filters使用默认过滤器="false">
        <context:exclude-filter排除过滤器 type="annotation注解" expression表达式="org.springframework.stereotype.Controller"/>
    </context:component-scan>
===============================================================================
//定义外部配置文件
    <context:property-placeholder属性占位符 location地点="classpath:db.properties"></context:property-placeholder>
===============================================================================
//配置数据源
    <bean豆 id="dataSource数据源" class=
"com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
    </bean>

===============================================================================
//配置事务管理器
    <bean豆 id="transactionManager事务管理器" class=
"org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource数据源" ref="dataSource数据源"></property>
    </bean>
===============================================================================
//开启事务控制
    <tx:annotation-driven注解开车 transaction-manager事务管理器="transactionManager事务管理器"></tx:annotation-driven>

//直接从上一个项目复制过来即可,但上面的”配置数据源”跟这个差不多 
===============================================================================
//整合mybatis 
    <bean豆 id="sqlSessionFactory会话工厂"class=
"org.mybatis.spring.SqlSessionFactoryBean会话工厂豆">
        <property name="dataSource数据源" ref="dataSource数据源" />
方式一:<property name="mapperLocations映射位置" value="classpath类路径: mybatis-config.xml"></property>
方式二:<property name="mapperLocations映射位置" value="classpath类路径:com/mashibing/dao/*.xml"></property>
    </bean>

方式一:之前学mybatis用MyTest调试时:

方式二:

 //配置映射

===============================================================================
//定义mybatis扫描器,扫描映射文件
    <bean豆 class="org.mybatis.spring.mapper.MapperScannerConfigurer映射扫描配置">
        <property name="basePackage基本包" value="com.mashibing.dao"></property>
        <property name="sqlSessionFactoryBeanName会话工厂豆名字" value="sqlSessionFactory会话工厂"></property>
    </bean>
</beans>

SSMController.java

@Controller
public class SSMController {

    @Autowired自动装配
    EmpDao empDao;

    @RequestMapping请求路径("/test")
    public String test(){
        System.out.println("test");
        Emp emp = empDao.selectEmpByEmpno(7369);
        System.out.println(emp);
        return "success";
    }
}

<body>
ssm  6666
</body>

 //lib

Emp.java

public class Emp implements Serializable序列化 {

    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double sal;
    private Double comm;
    private Integer deptno;

    public Integer getEmpno() {return empno;}
    public void setEmpno(Integer empno) {this.empno = empno;}

    public String getEname() {return ename;}
    public void setEname(String ename) {this.ename = ename;}

    public String getJob() {return job;}
    public void setJob(String job) {this.job = job;}

    public Integer getMgr() {return mgr;}
    public void setMgr(Integer mgr) {this.mgr = mgr;}

    public Date getHiredate() {return hiredate;}
    public void setHiredate(Date hiredate) {this.hiredate = hiredate;}

    public Double getSal() {return sal;}
    public void setSal(Double sal) {this.sal = sal;}

    public Double getComm() {return comm;}
    public void setComm(Double comm) {this.comm = comm;}

    public Integer getDeptno() {return deptno;}
    public void setDeptno(Integer deptno) {this.deptno = deptno;}

    @Override
    public String toString() {
        return "Emp{" +
                "empno=" + empno +
                ", ename='" + ename + '\'' +
                ", job='" + job + '\'' +
                ", mgr=" + mgr +
                ", hiredate=" + hiredate +
                ", sal=" + sal +
                ", comm=" + comm +
                ", deptno=" + deptno +
                '}';
    }
}

Dept.java

public class Dept implements Serializable序列化 {
    private Integer deptno;
    private String dname;
    private String loc;
    private List<Emp> emps;

    public Integer getDeptno() {return deptno;}
    public void setDeptno(Integer deptno) {this.deptno = deptno;}

    public String getDname() {return dname;}
    public void setDname(String dname) {this.dname = dname;}

    public String getLoc() {return loc;}
    public void setLoc(String loc) {this.loc = loc;}

    public List<Emp> getEmps() {return emps;}
    public void setEmps(List<Emp> emps) {this.emps = emps;}

    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                ", emps=" + emps +
                '}';
    }
}

EmpDao.java

public interface EmpDao {

    public Emp selectEmpByEmpno(Integer empno);
}

EmpDao.xml

<mapper namespace="com.mashibing.dao.EmpDao">
   <select id="selectEmpByEmpno" resultType="com.mashibing.bean.Emp">
       select * from emp where empno = #{empno}
   </select>
</mapper>

DeptDao.java


public interface DeptDao {

    public Dept selectDeptByDeptno(Integer deptno);
}

DeptDao.xml

<mapper namespace="com.mashibing.dao.DeptDao">

</mapper>

mybatis-config.xml

<configuration>
    <properties resource="db.properties" ></properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>

</configuration>

调试结果:

如果报错,重新粘贴过该.xml文件,那么需要执行这段:

如果开启了spring.xml中的方式二,那么就:

===========================================================

 //一样

另一种方式:

原因是拷贝时出现问题

 //一样

spring.xml

 //一样

简单开发:

<body>
ssm  6666
=================================== 添加 ======================================
<br>
${emp}
===============================================================================
</body>

2mybatis逆向工程

1、引入pom依赖

 <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
       <dependency>
           <groupId>org.mybatis.generator</groupId>
           <artifactId>mybatis-generator-core</artifactId>
           <version>1.4.0</version>
       </dependency>

2、编写配置文件:

<!DOCTYPE generatorConfiguration PUBLIC
       "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
       "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
   <context id="simple" targetRuntime="MyBatis3">
       <!--指向数据库连接-->
       <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                       connectionURL="jdbc:mysql://192.168.85.111:3306/demo?serverTimezone=UTC"
                       userId="root"
                       password="123456"
       />

       <!--生成对应的实体类
       targetPackage:指定生成java文件的目录
       targetProject:放在那个工程的哪个目录下
       -->
       <javaModelGenerator targetPackage="com.mashibing.bean" targetProject="src/main/java"/>

       <!--SQL映射文件生成器
       targetPackage:指定生成java文件的目录
       targetProject:放在那个工程的哪个目录下
       -->
       <sqlMapGenerator targetPackage="com.mashibing.dao" targetProject="src/main/resources"/>

       <!--dao接口生成器-->
       <javaClientGenerator type="XMLMAPPER" targetPackage="com.mashibing.dao" targetProject="src/main/java"/>

       <!--指定要逆向生成的数据表
       tableName:表名
       domainObjectName:对象名
       -->
       <table tableName="emp" domainObjectName="Emp" enableCountByExample="false" enableDeleteByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" enableSelectByExample="false"/>
       <table tableName="dept" domainObjectName="Dept" enableCountByExample="false" enableDeleteByExample="false" enableUpdateByExample="false" selectByExampleQueryId="false" enableSelectByExample="false"/>
   </context>
</generatorConfiguration>

3、编写测试类

public class Test {
   public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
       List<String> warnings = new ArrayList<String>();
       boolean overwrite = true;
       File configFile = new File("mbg.xml");
       ConfigurationParser cp = new ConfigurationParser(warnings);
       Configuration config = cp.parseConfiguration(configFile);
       DefaultShellCallback callback = new DefaultShellCallback(overwrite);
       MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
       myBatisGenerator.generate(null);
  }
}

3、分页插件 PageHelper(自学,项目中会使用)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值