mybatis配置包扫描_mybatis 配置文件,配置扫描多个包 - CSDN
精华内容
参与话题
  • Spring整合MyBatis (使用扫描包配置mapper代理) pojo是根据表生成的实体类,属性名要跟字段名相同,不相同sql语句查询时用别名。 首先导jar实体类public class User { private Integer id; private String ...

    Spring整合MyBatis (使用扫描包配置mapper代理)
    pojo是根据表生成的实体类,属性名要跟字段名相同,不相同sql语句查询时用别名。
    首先导jar包

    实体类

    public class User {
        private Integer id;
        private String username;// 用户姓名
        private String sex;// 性别
        private Date birthday;// 生日
        private String address;// 地址
    }

    第一步:
    编写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>
    </configuration>

    第二步:
    编写Spring 配置文件applicationContext.xml

    (
    db.properties:文件里面放的是连接数据库的相关信息。
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/t003?characterEncoding=utf-8
    jdbc.username=test01
    jdbc.password=
    )   
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        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-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
    
        <!-- 加载配置文件 -->
        <context:property-placeholder location="classpath:db.properties" />
        <!-- 数据库连接池 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="maxActive" value="10" />
            <property name="maxIdle" value="5" />
        </bean>
        <!-- sqlSessonFactory的配置 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 配置数据库连接池 -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 加载配置文件 -->
            <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
        </bean>
    
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
            <property name="basePackage" value="cn.test" /> 
        </bean>
    
    </beans>

    第四步编写接口相对应的xml文件UserMapper.xml

    <?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">
    <!-- namespace是命名空间,作用sql语句的隔离,后面还有重要作用 #{}作用就是占位符,相当于jdbc的“?” parameterType:查询的参数类型 
        resultType:查询结果的数据类型,如果给pojo应该给全路径。 -->
    <!-- mapper代理的开发规则: 1、namespace必须时候接口的全限定名 2、Statementid必须和接口的方法名称一致 3、接口方法的参数类型要和parameterType要一致 
        4、接口方法的返回值类型要和resultType一致 -->
    <mapper namespace="cn.test.mybatis.po.UserMapper">
        <!-- 别名不区分大小写 -->
        <select id="getUserById" parameterType="int" resultType="cn.test.mybatis.po.User">
            SELECT * FROM `user` WHERE id=#{id};
        </select>
    
        <!-- 如果查询结果返回list, resultType设置为list中一个元素的数据类型 ${}字符串拼接指令 -->
        <select id="getUserByName" parameterType="string"
            resultType="cn.test.mybatis.po.User">
            SELECT * FROM `user` WHERE username LIKE '%${value}%'
        </select>
        <!--  美丽的分界线 只测试最简单的上边两个方法  -->
        <!-- 参数为pojo时,#{}中的名称就是pojo的属性 -->
        <!-- <insert id="insertUser" parameterType="cn.test.mybatis.po.User">
            keyProperty:对于pojo的主键属性 resultType:对应主键的数据类型 order:是在insert语句执行之前或者之后。 
                如果使用uuid做主键,应该先生成主键然后插入数据,此时应该使用Before
            <selectKey keyProperty="id" resultType="int" order="AFTER">
                SELECT LAST_INSERT_ID()
            </selectKey>
            INSERT into user (username,birthday,sex,address)
            values (#{username}, #{birthday}, #{sex}, #{address})
        </insert> -->
    
        <!-- <select id="getUserByQueryVo" parameterType="queryvo"
            resultType="user">
            SELECT * FROM `user` WHERE id=#{user.id};
        </select> -->
    
        <!-- 查询用户表中的记录数 -->
        <!-- <select id="getUserCount" resultType="int">
            SELECT count(*) FROM `user`
        </select>
    
        <sql id="find_user_list_where">
            <where>
                <if test="id!=null">
                    and id=#{id}
                </if>
                <if test="username != null and username != ''">
                    and username like '%${username}%'
                </if>
            </where>
        </sql>
        <sql id="user_field_list">
            id,username,birthday,sex,address
        </sql> -->
    <!--    <select id="findUserList" parameterType="user" resultType="user">
            select
            <include refid="user_field_list" />
            from user
            <include refid="find_user_list_where" />
        </select> -->
        <!-- 动态sql foreach测试 -->
        <!-- <select id="findUserByIds" parameterType="queryvo" resultType="user">
            SELECT
            <include refid="user_field_list" />
            FROM `user`
            <where>
                and id in(1,10,20,21,31)
                <foreach collection="ids" item="id" open="and id in(" close=")"
                    separator=",">
                    #{id}
                </foreach>
    
            </where>
        </select> -->
    </mapper>

    最后测试

    public class MyBatisTest {
    
        private ApplicationContext applicationContext;
    
        @Before
        public void init() throws Exception {
            // 初始化spring容器
            applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        }
    
        @Test
        public void testFindUserById() {
            UserMapper userMapper = applicationContext.getBean(UserMapper.class);
            List<User> user = userMapper.getUserByName("王五");
            for (User user2 : user) {
    
                System.out.println(user2.getUsername());
            }
        }
    
        @Test
        public void test() {
            UserMapper userMapper = applicationContext.getBean(UserMapper.class);
            User userById = userMapper.getUserById(1);
    
            System.out.println(userById);
        }
    }
    
    展开全文
  • mybatis包扫描问题

    2020-08-05 17:58:10
    多模块下mybatis包扫描问题 问题描述 在springboot项目中,开发多个...这个问题是包扫描不到的问题,于是找到配置文件,对mybatis配置中的mapper-locations,配置对*mapper.xml文件的扫描,如下: mapper-location

    多模块下mybatis包扫描问题

    1. 问题描述
      在springboot项目中,开发多个模块,但是在主模块中引用了其他的模块,其他的模块中包含了一些对数据操作的mapper,启动主模块访问接口,如果访问到其他模块的接口,发现这些接口如果需要执行mapper.xml中的sql,控制台会报错,找不到指定的mapper.
      报错信息
    2. 问题解决
      这个问题是包扫描不到的问题,于是找到配置文件,对mybatis的配置中的mapper-locations,配置对*mapper.xml文件的扫描,如下:
    mapper-locations: classpath:/mapper/**/**Mapper.xml,/mapper/**/**/**Mapper.xml
    

    classpath:表示只扫描当前模块下的mapper文件,于是讲其改为classpath*:表示扫描所有的mapper文件。报错解决

    展开全文
  • mybatis扫描文件配置

    2018-12-13 09:22:00
    #XML文件位置mybatis: mapperLocations: classpath:mybatis/mapper/default/common/*.xml type-aliases-package: ...
    #XML文件位置
    mybatis:
    mapperLocations: classpath:mybatis/mapper/default/common/*.xml
    type-aliases-package: com.boco.rnop.portal.monitorsceneappservice.entity.domainModel
    configuration:
    variables:
    attendanceDataBaseName:

    转载于:https://www.cnblogs.com/ymj2018/p/10112142.html

    展开全文
  • 从零开始···mybatis配置扫描补充

    千次阅读 2017-10-25 22:17:30
    配置mybatis,建了一个mapper的接口与xml关联。这样一来发现dao层的类有点多余。想把dao层中类改为接口与xml关联,删除那个mapper。 但在修改后发现出现了mybatis绑定的异常,就是dao层的接口与xml关联失败。...

    在配置mybatis,建了一个mapper包的接口与xml关联。这样一来发现dao层的类有点多余。想把dao层中类改为接口与xml关联,删除那个mapper包。
    但在修改后发现出现了mybatis绑定的异常,就是dao层的接口与xml关联失败。经过反复实验发现是配置文件扫描设置的问题。
    我开始的配置方式如图:
    配置方式
    使用< mybatis: scan base-package=····/>配置扫描位置,这种配置要求接口和xml文件名字相同,文件目录相同。
    目录
    如图中所示,xml文件的文件目录与dao接口的包目录一致,且文件名相同。此时才能成功扫描到文件并绑定。
    而我在修改时没有修改文件名导致绑定失败。
    当然也可以不用这种方法,分别配置扫描地址,这样虽然要多写一些代码,但是没有什么要求。
    配置
    如图,分别配置了xml和接口包的扫描地址,就不需要遵循文件名和文件目录的一致。
    以上就是对mybatis中扫描配置的补充

    展开全文
  • #mybatis mybatis-plus: config-location: classpath:/xml/mybatis-config.xml mapper-locations: classpath*:/xml/mapper/*Mapper.xml #实体扫描,多个package用逗号或者分号分隔 typeAliasesPackage: ...
  • springBoot mybatis 包扫描

    千次阅读 2018-05-18 11:31:03
    @MapperScan(basePackages = {"com.zscat.*.dao","...}) @EnableTransactionManagement(proxyTargetClass = true) @SpringBootApplication @MapperScan(basePackages = {"...
  • mybatis配置basePackage扫描多个路径

    千次阅读 2020-05-08 12:03:13
    -- spring和MyBatis完美整合,不需要mybatis配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /...
  • <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.hyn.maper" /> </bean> 其中有org.hyn.maper.UserMapper 那么...
  • Springboot集成Mybatis支持*匹配扫描包1.在Mybati-Config.xml文件中添加如下配置重启(方法一)2.在Mapper.xml中直接使用类全面(方法二)3.配置Mybatis支持*扫描包(方法三) 当我们集成Mybatis初始化加载*Mapper.xml时...
  • IDEA创建Maven项目会自动生成java和resources两个目录,当我们进行mybatis配置时,默认会可以访问到resource目录下的xml文件,但无法访问java目录文件夹下都xml文件。 因此MyBatis自动扫描包下的Mapper会报错,因此...
  • spring与mybatis整合生成代理对象采用mapper扫描器,将下的所有mapper接口扫描出来创建代理对象并在spring容器注册,总体配置如下<!-- 配置加载数据库配置文件 --> <!-- placeholder:占位符 --> <!-- 配置
  • mybatis.mapper-location=classpath: mappers/push/*.xml,classpath*:/mappers/*.xml
  • Mybatis别名的使用

    千次阅读 2017-02-06 10:07:37
    之前,我们在sql映射xml文件中的引用实体类时,需要写上实体类的全类名(名+类名),如下: insert into users(name,age) values(#{name},#{age}) </insert>parameterType=”me.gacl.domain.Us
  • mybatis自动扫扫描不到jar的解决方案
  • Mybatis 如何扫描多个下的mapper,

    万次阅读 2018-03-18 15:36:24
    今天做毕业设计的时候,添加了一个mapper到项目中,然后发现报了一个错误: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultParamController': Injection of...
  • 百度得到,但是很乱,稍微整理下: ...-- spring和MyBatis完美整合,不需要mybatis配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <pr...
  • -- ================================ MyBatis SqlSession配置 ========================================= --> <!-- 使用SqlSessionFactoryBean工厂产生SqlSession对象,方便后期注入Dao --> ...
  • SpringBootLean 是对springboot...地址:点我进入项目地址最近在项目中集成以全注解的方式Mybatis配置了自动bean与mapper所在db.mybatis.mapperLocations=classpath*:com/cml/springboot/sample/db/resource/* d
  • Mybatis配置别名

    2019-04-01 17:08:59
    我们都知道在使用mybatis时需要书写xml文件 我们使用paramType和resultType标记语句的入参和返回类型。每次都需要填入类型的全类名,当...第二种是包扫描的方式。可以将包下所有的类进行扫描,默认将类名作为别名...
1 2 3 4 5 ... 20
收藏数 46,985
精华内容 18,794
关键字:

mybatis配置包扫描