崇之他和她

导航

day03102mybatis配置文件

mybatis map的应用

1.万能的map传参执行sql

<!--万能的map,适合表字段多需要插入的参数少的时候,只要map中存在userName的K password的K-->
<insert id="insertMap" parameterType="map">
    insert into mbt (name,pwd)values (#{userName},#{password})
</insert>
int insertMap(Map<String,Object> map);//接口 map.put("username",nnnn) map.put("password",123455)

2.like 语句防止sql注入拼接

select * from aa where a like #{value}//正确写法 通配符在逻辑中传参拼接可以防止sql注入

select * from aa where a like "%" #{value}"%" 错误写法

配置解析 mybatis-config.xml

  • configuration 配置

优化前

<?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>
    <environments default="development1"><!--指定默认用其中一个环境,-->
        <environment id="development1"><!--第一套环境-->
            <transactionManager type="JDBC"/><!--事务管理器,还有一种manger事务管理器可以阻止默认关闭-->
            <dataSource type="POOLED"><!--数据源连接-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
                <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="zhq521444"/>
            </dataSource>
        </environment>
        <environment id="development2"><!--第二套环境测试环境-->
            <transactionManager type="JDBC"/><!---->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
                <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="zhq521444"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mbt/mapper/MbtMapper.xml"/>
    </mappers>
</configuration>

属性properties可以用来实现引用配置文件

优化第一步 properties resource="db.properties"><!--只能写在第一个标签--

<?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>
    <!--引入外部配置文件-->
    <properties resource="db.properties"><!--只能写在第一个标签-->
        <!--<property name="" value=""--><!--不用此方法引用外部配置文件优先-->
    </properties>
     <settings><!--设置属性只能写在第二个标签-->
        <!--可以设置数据库字段_分隔的对应实体类字段驼峰命名等其他功能设置-->
        <setting name="" value=""/>
    </settings>
    <typeAliases><!--只能写在第三个标签-->
        <!--给对应实体类起别名 可以用在全局所有地方 例如mapper.xml中resaultType-->
        <typeAlias type="com.mbt.bean.Mbt" alias="MBT"></typeAlias>
        <!--扫描实体类的包,可以使类名成为默认的别名,别名的类首字母建议小写-->
        <package name="com.mbt"></package>
        <!--在扫描包的前提下可以在实体类上加注解@Alias("immbt")起别名-->
    </typeAliases>
    <environments default="development1">
        <environment id="development1">
            <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}"/>
                <!--<property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
                <!--&lt;!&ndash;<property name="driver" value="com.mysql.jdbc.Driver"/>&ndash;&gt;-->
                <!--<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true&amp;serverTimezone=UTC"/>-->
                <!--<property name="username" value="root"/>-->
                <!--<property name="password" value="zhq521444"/>-->
            </dataSource>
        </environment>
        <environment id="development2">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mbt?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true"/>
                <property name="username" value="root"/>
                <property name="password" value="zhq521444"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--通过xml注册-->
        <mapper resource="com/mbt/mapper/MbtMapper.xml"/>
         <!--通过class注册mapper-->
        <!--<mapper class="com.mbt.mapper.MbtMapper"/>-->
    </mappers>
</configuration>

配置了别名的mapper.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">
<mapper namespace="com.mbt.mapper.MbtMapper">
    <select id="getMbt" resultType="com.mbt.bean.Mbt">
    select * from mbt
  </select>
    <!--mybatis-config.xml全局配置中起了别名MBT,对应实体类Mbt-->
    <select id="getMbt2" resultType="MBT">
    select * from mbt
  </select>
   
</mapper>

plugins插件

  • mybatis -generator-core 自动生成dao层代码
  • mybatis-plus 补充mybatis让他更高效简化,基本增删改查不需要写
  • 通用mapper

映射器

mapperRegistry 注册绑定mapper文件

全局文件中1.通过xml注册mapper

2.通过class注册扫描到mapper 条件是接口和xml必须在同一个包下并且同名

posted on 2021-02-19 20:01  崇之他和她  阅读(63)  评论(0编辑  收藏  举报