zoukankan      html  css  js  c++  java
  • spring整合mybatis

    项目结构:

    表:

    create table user(
      username varchar(50),
      pswd varchar(50),
      sex varchar(50)
    );

    表中的数据:

    自定义注释:

    Type_User_Annotation:

    /*User类对应User表的注解*/
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Type_User_Annotation {
        String value(); //表名
    }

    Field_User_Annotaion:

    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Field_User_Annotation { //表对应实体类属性的注释
        String columnName(); //列名
        String type(); //类型
        int length(); //长度
    }

    UserMapper接口:

    public interface UserMapper {
        @Select("select * from User WHERE username = #{username}")
        public User getUserByUsername(@Param("username")String username);
    }

    UserMapperImpl实现类:

    public class UserMapperImpl implements UserMapper{
        private SqlSessionTemplate sqlSessionTemplate;
        public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate){
            this.sqlSessionTemplate = sqlSessionTemplate;
        }
        @Override
        public User getUserByUsername(String username) {
            UserMapper mapper = sqlSessionTemplate.getMapper(UserMapper.class);
            return mapper.getUserByUsername("晓晓");
        }
    }

    实体类User:

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    @Type_User_Annotation("User")
    public class User {
        @Field_User_Annotation(columnName = "username",type = "varchar",length = 50)
        private String username;
        @Field_User_Annotation(columnName = "pswd",type = "varchar",length = 50)
        private String pswd;
        @Field_User_Annotation(columnName = "sex",type = "varchar",length = 50)
        private String sex;
    }

    UserMapper.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="dao.UserMapper">
        <cache/>
    
    </mapper>

    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:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd">
           <import resource="spring-dao.xml"/>
           <bean id="userMapperImpl" class="dao.UserMapperImpl">
                  <property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
           </bean>
    </beans>

    log4j.properties:

    #将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
    log4j.rootLogger=DEBUG,console,file
    
    #控制台输出的相关设置
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.Threshold=DEBUG
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
    
    #文件输出的相关设置
    log4j.appender.file = org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=./log/ming.log
    log4j.appender.file.MaxFileSize=10mb
    log4j.appender.file.Threshold=DEBUG
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
    
    #日志输出级别
    log4j.logger.org.mybatis=DEBUG
    log4j.logger.java.sql=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.ResultSet=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    mybatis-config.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="LOG4J"/>
            <setting name="cacheEnabled" value="true"/>
        </settings>
        <typeAliases>
            <package name="pojo"/>
            <package name="dao"/>
        </typeAliases>
    </configuration>

    spring-dao.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:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd">
        <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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </bean>
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
            <property name="mapperLocations" value="classpath:dao/*.xml"/>
        </bean>
        <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg index="0" ref="sqlSessionFactory"/>
        </bean>
    </beans>

    控制台输出:

    第二种整合方式(常用):

    改变UserMapperImpl实现类:

    public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper {
        @Override
        public User getUserByUsername(String username) {
            return this.getSqlSession().getMapper(UserMapper.class).getUserByUsername("晓晓");
        }
    }

    删掉spring-dao.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:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd">
        <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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
        </bean>
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
            <property name="mapperLocations" value="classpath:dao/*.xml"/>
        </bean>
    </beans>

    ApplicationContext写法:

    <?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:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd">
           <import resource="spring-dao.xml"/>
           <bean id="userMapperImpl2" class="dao.UserMapperImpl2">
                  <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
           </bean>
    </beans>
  • 相关阅读:
    C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]
    php框架
    ExtJS带验证码登录框[新增回车提交]
    ant 读取环境变量的值
    Apache Velocity实现模板化
    23种设计模式概述
    android资源下载
    无序hashset与hashmap让其有序
    PermGen space错误解决方法
    设计模式之代理模式(Proxy)
  • 原文地址:https://www.cnblogs.com/wmskywm/p/13648831.html
Copyright © 2011-2022 走看看