zoukankan      html  css  js  c++  java
  • Mybatis笔记(二)

    MyBatis

    逆向工程

    MyBatis Generator

    • 代码生成器
    • 可以根据指定的表快速生成对应的映射文件,接口,以及Bean类
    • 支持基本的增删改查,以及QBC风格的条件查询
    • 但是一些复杂的表连接还是需要我们自己来去编写

    使用

    1.下载

    https://github.com/mybatis/generator/releases

    2.把相关jar导入到工程当中

    3.创建generatorConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
    	PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    	"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
    <generatorConfiguration>
    	<!--
    		targetRuntime:设置自动生成的版本
    		MyBatis3:
    		MyBatis3Simple:简单增删改查
    	-->
    	<context id="DB2Tables" targetRuntime="MyBatis3">
    		<!--
    		   不要生成日期和备注
    		-->
    		<commentGenerator>
    			<property name="suppressDate" value="true"/>
    			<property name="suppressAllComments" value="true" />
    		</commentGenerator>
    
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    						connectionURL="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"
    						userId="root"
    						password="1234">
    		</jdbcConnection>
    
    		<!--
    		配置domain生成策略
    		targetProject:把自动生成的domian放在哪个工程里面
    		targetPackage:哪个包下
    
    		-->
    		<javaModelGenerator targetPackage="com.le.domain" targetProject=".src">
    			<property name="enableSubPackages" value="true" />
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
    
    		<!--
    			配置mapper的生成策略
    			targetPackage:把自动生成的mapper放在哪个工程里面
    			targetProject:哪个包下
    		-->
    		<sqlMapGenerator targetPackage="com.le.mapper"  targetProject=".src">
    			<property name="enableSubPackages" value="true" />
    		</sqlMapGenerator>
    		<!--
    			mapper接口生成策略
    		-->
    		<javaClientGenerator type="XMLMAPPER" targetPackage="com.le.mapper"  targetProject=".src">
    			<property name="enableSubPackages" value="true" />
    		</javaClientGenerator>
    
    		<table tableName="customer" domainObjectName="Customer" ></table>
    		<table tableName="teacher" domainObjectName="Teacher" ></table>
    		<table tableName="student" domainObjectName="Student" ></table>
    
    	</context>
    </generatorConfiguration>
    

    4.编写生成代码

    List<String> warnings = new ArrayList<String>();
    boolean overwrite = true;
    File configFile = new File("./src/generatorConfig.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);
    

    分页插件

    1.下载分页插件

    https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md

    2.配置分页插件

    <plugins>
    	<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
    

    3.使用分页插件

    在查询之前设置分页
    	 Page<Object> page = PageHelper.startPage(1, 5);
    查询数据之后添加
    	PageInfo<Customer> pageInfo = new PageInfo<>(customers, 5);
    属性介绍
    	System.out.println("当前页:"+pageInfo.getPageNum());
    	System.out.println("每页显示记录数:"+pageInfo.getPageSize());
    	System.out.println("总页数:"+pageInfo.getPages());
    	System.out.println("总记录数:"+pageInfo.getTotal());
    	System.out.println("是否有上一页:"+pageInfo.isHasPreviousPage());
    	System.out.println("是否有下一页:"+pageInfo.isHasNextPage());
    	System.out.println("导航页面:"+ Arrays.toString(pageInfo.getNavigatepageNums()));
    

    SSM整合(spring与springMVC)

    1.创建web动态工程

    2.导入spring包与配置文件

    相关jar包

    ant-1.9.6.jar
    ant-launcher-1.9.6.jar
    asm-5.2.jar
    cglib-3.2.5.jar
    com.springsource.org.aopalliance-1.0.0.jar
    com.springsource.org.apache.commons.logging-1.1.1.jar
    com.springsource.org.apache.log4j-1.2.15.jar
    com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
    commons-logging-1.2.jar
    druid-1.0.15.jar
    javassist-3.22.0-GA.jar
    lombok.jar
    mybatis-3.4.6.jar
    mybatis-spring-1.3.2.jar
    mysql-connector-java-5.1.7-bin.jar
    ognl-3.1.16.jar
    slf4j-api-1.7.25.jar
    slf4j-log4j12-1.7.25.jar
    spring-aop-5.0.7.RELEASE.jar
    spring-aspects-5.0.7.RELEASE.jar
    spring-beans-5.0.7.RELEASE.jar
    spring-context-5.0.7.RELEASE.jar
    spring-core-5.0.7.RELEASE.jar
    spring-expression-5.0.7.RELEASE.jar
    spring-jdbc-5.0.7.RELEASE.jar
    spring-orm-5.0.7.RELEASE.jar
    spring-test-5.0.7.RELEASE.jar
    spring-tx-5.0.7.RELEASE.jar
    spring-web-5.0.7.RELEASE.jar
    

    applicationContext.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:aop="http://www.springframework.org/schema/aop"
    	   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
    		http://www.springframework.org/schema/context/spring-context.xsd
    	http://www.springframework.org/schema/aop
    	http://www.springframework.org/schema/aop/spring-aop.xsd
    	 http://www.springframework.org/schema/tx
    		http://www.springframework.org/schema/tx/spring-tx.xsd
    ">
    	<!--注解扫描-->
    	<context:component-scan base-package="com.le"/>
    </beans>
    

    3.在web.xml当中配置spring监听器

    <!--Spring的核心监听器-->
    <listener>
    	<listener-class>
    		org.springframework.web.context.ContextLoaderListener
    	</listener-class>
    </listener>
    <!--
    	加载Spring的配置文件的路径的
    	默认加载的/WEB-INF/applicationContext.xml
     -->
    <context-param>
    	<param-name> contextConfigLocation</param-name>
    	<param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    

    4.添加springMVC相关jar包

    spring-webmvc-5.0.7.RELEASE.jar
    

    5.添加springMVC配置文件

    <?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
    	http://www.springframework.org/schema/context/spring-context.xsd
    	http://www.springframework.org/schema/mvc
    	http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    	">
    	<!--注解扫描-->
    	<context:component-scan base-package="com.le">
    		<!--只扫描控制器-->
    		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    	</context:component-scan>
    	<!--静态资源访问-->
    	<mvc:default-servlet-handler/>
    	<mvc:annotation-driven />
    	<!--配置视图解析器-->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/view/"/>
    		<property name="suffix" value=".jsp"/>
    	</bean>
    </beans>
    

    6.在web.xml当中配置springMVC前端控制器和编码

    <!-- 解决post乱码问题 -->
    <filter>
    	<filter-name>encoding</filter-name>
    	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    	<!-- 设置编码参是UTF8 -->
    	<init-param>
    		<param-name>encoding</param-name>
    		<param-value>UTF-8</param-value>
    	</init-param>
    </filter>
    <filter-mapping>
    	<filter-name>encoding</filter-name>
    	<url-pattern>/*</url-pattern>
    </filter-mapping>
    
    
    <!-- 配置SpringMVC前端控制器 -->
    <servlet>
    <servlet-name>mySpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 指定SpringMVC配置文件 -->
    <!-- SpringMVC的配置文件的默认路径是/WEB-INF/${servlet-name}-servlet.xml -->
    <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>mySpringMVC</servlet-name>
    <!-- 拦截所有,不包括jsp,包含.js .png.css     建议使用  -->
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    7.测试springMVC

    创建form表单

    <form action="${pageContext.request.contextPath}/addcustomer">
    	客户名称:<input type="text"> <br>
    	客户职业:<input type="text"/> <br>
    	客户电话: <input type="text"/> <br>
    	客户邮件: <input type="text"/> <br>
    	<input type="submit" value="添加">
    </form>
    

    创建CustomterController处理业务

    package com.le.web;
    
    import com.le.domain.Customer;
    import com.le.service.CustomerService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class CustomerController {
        /*注入业务层*/
        @Autowired
        private CustomerService customerService;
    
        @RequestMapping("addCustomer")
        public String addCustomer(Customer customer){
            /*接收参数*/
            System.out.println("来到了web层"+customer);
            /*把数据保存到数据库当中*/
            /*调用业务层 保存到数据库当中*/
            customerService.saveCustomer(customer);
            return "result";
        }
    }			
    
    package com.le.service;
    
    import com.le.domain.Customer;
    import com.le.mapper.CustomerMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    @Service("CustomerService")
    @Transactional
    public class CustomerServiceImpl implements CustomerService {
        @Autowired
        private CustomerMapper customerMapper;
    
        @Override
        public void saveCustomer(Customer customer) {
            System.out.println("来到了业务层 保存 customer"+customer);
            /*调用dao层*/
            customerMapper.insertCustomer(customer);
        }
    }
    
    package com.le.mapper;
    
    import com.le.domain.Customer;
    
    public interface CustomerMapper {
        public void insertCustomer(Customer customer);
    }
    
    <?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">
    
    <mapper namespace="com.le.mapper.CustomerMapper">
        <insert id="insertCustomer">
            insert into `customer`(cust_name,cust_profession,cust_phone,email)
            values (#{cust_name},#{cust_profession},#{cust_phone},#{email})
        </insert>
    </mapper>
    

    8.添加Mybatis相关jar包

    ant-1.9.6.jar
    ant-launcher-1.9.6.jar
    asm-5.2.jar
    cglib-3.2.5.jar
    commons-logging-1.2.jar
    javassist-3.22.0-GA.jar
    junit-4.9.jar
    log4j-1.2.17.jar
    log4j-api-2.3.jar
    log4j-core-2.3.jar
    lombok.jar
    mybatis-3.4.6.jar
    mysql-connector-java-5.1.7-bin.jar
    ognl-3.1.16.jar
    slf4j-api-1.7.25.jar
    slf4j-log4j12-1.7.25.jar
    

    9.添加Mybatis配置文件和数据库属性文件

    sqlMapConfig.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
    		PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    		"http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    	<settings>
    		<setting name="logImpl" value="STDOUT_LOGGING"/>
    	</settings>
    	<typeAliases>
    		<!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
    		<package name="com.le.domain" />
    	</typeAliases>
    </configuration>
    

    db.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=1234
    

    9.创建CustomerMapper

    <?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">
    <mapper namespace="com.le.mapper">
    </mapper>
    

    10.在applicationContext.xml配置文件中添加Mybatis数据库相关配置信息

    <!--加载数据库属性文件-->
    <context:property-placeholder location="classpath:db.properties"/>
    <!--连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    	<property name="driverClassName" value="${jdbc.driver}" />
    	<!--属性文件当中的名称不能和name名称一样-->
    	<property name="url" value="${jdbc.url}" />
    	<property name="username" value="${jdbc.username}" />
    	<property name="password" value="${jdbc.password}" />
    </bean>
    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
    	  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<!-- 数据源 -->
    	<property name="dataSource" ref="dataSource" />
    </bean>
    
    <!-- 开启注解事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <!-- Mybatis的工厂 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!-- 核心配置文件的位置 -->
    <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
    <!--配置mapper映射文件的路径-->
    <property name="mapperLocations" value="classpath:com/le/mapper/*.xml"/>
    </bean>
    
    <!-- 配置Mapper扫描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 配置Mapper扫描包 -->
    <property name="basePackage" value="com.le.mapper" />
    </bean>
    
  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/10967843.html
Copyright © 2011-2022 走看看