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&characterEncoding=utf8&useSSL=true&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&characterEncoding=utf8&useSSL=true&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"/>-->
<!--<!–<property name="driver" value="com.mysql.jdbc.Driver"/>–>-->
<!--<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true&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&characterEncoding=utf8&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必须在同一个包下并且同名