1.注解模式:
我们之前编写sql语句都在映射文件中,我们也可以使用注解完成sql的编写。(在xxxDao接口里面)
第一步在Dao接口中:
第二步在映射文件中:
第三步在配置文件中:
2. 添加mybatis的sql日志
(帮你在控制台显示sql执行语句。 查看你的sql是否写错)
第一步:在pom.xml中引入依赖:log4j依赖
pom.xml文件
<!--引入log4j依赖-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>我再写一遍pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis02</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--引入log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><dependency><!--lombok依赖--><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version><scope>compile</scope></dependency><!--mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><!-- <scope>test</scope>--></dependency><!--mybatis框架的依赖--><dependency><groupId>repMaven.org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency></dependencies></project>
第二步:该日志文件名必须为log4j.properties,必须放在resources下
在log4j.properties中添加代码:
log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
以后不管运行哪个方法都有日志:
3.为实体类起别名
第一步:在配置文件mybatis中添加,第二步:在映射文件中修改
4.把数据源信息提取到属性文件中
(引入数据源的属性文件(建一个db.properties在resoruces下面)(在mybatis中设置)(有顺序))
db.properties.xml
# ????????????key=value key ????????? jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=root
在mybatis.xml文件中配置:
(顺序)
5. mybatis处理多个参数
(传递多个参数:param1 param2
加注解@Param,就可以使用之前的名字,在XXXDao里面的方法里加)
org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2] (错误常见)
6. xml出现特殊字符
特殊字符串:(自已搜索,mybatis处理特殊字符)
<!--在xml中出现特殊符号.处理特殊符合:
1.第一种使用转义符: <[<] >[>] &[&]等
2.第二种使用CDATA标签:<![CDATA[sql]]>
-->
7. 获取主键递增的值
获取主动递增的键值(主键id有时候需要用到,所以还是得获取到才行)
8. 模糊查询
select * from 表名 where name like '%三%'
<!--使用concat函数字符串拼接-->
<select id="selectByLike" resultType="org.example.entity.Teacher">
select * from tbl_teacher where name like concat('%',#{name},'%')
</select>
还有一个方法:${},里面使用转义符,但是这种方法存在sql注入安全问题,前面有这个知识点
9. 解决列名和属性名不一致的问题
数据库中的列名和(实体类中)属性名不一致的问题:
某些属性无法赋值,变为null
第一种方法:
在sql语句中起别名就是as那个,也可以不写那个as,别名在后面写上,这次别名就要和实体类的名字一致了,不然没法赋值
第二种方法: 使用resultmap标签
添加autoMapping,不用再手动映射!!
两种方法,第一种,如果数据量大,一个一个改就比较麻烦,第二个修改过后,就不用再反复更改。