mybatis
1.注解模式
在dao接口方法上面直接用注解
@Select(value = "select * from t_student where id=#{id}") public Student selectById(int id);
在mybatis.xml里面配置类的映射文件
<mappers> <mapper class="com.ghx.dao.StudentDao"/> </mappers>
当既有注解模式,又有xml模式时,建议只写xml模式 若都写,类的映射要在xml上面
2.mybatis日志文件
引入jar,如
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
把log4j.properties文件放在resources文件夹下
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.把数据源信息提取到属性文件中
db.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/day11 jdbc.username=root jdbc.password=123456
在mybatis.xml里面引入db.properties
4. 为实体类起别名
5. mybatis处理多个参数
当方法里需要多个参数时需要使用注解@Param
否则会出现类似下面的错误
6. xml特殊字符
使用<![CDATA[sql]>
<select id="selectById2" resultType="com.ghx.entity.Student"> <![CDATA[select * from t_student where id>#{min} and id<#{max}]]> </select>
7. 获取主键递增的值
useGeneratedKeys="true" keyProperty="id"
<insert id="insert" useGeneratedKeys="true" keyProperty="id"> insert into t_student values (null,#{name},#{age},#{classid}) </insert>
使用,插入完成再输出时可以获取id
不使用,插入完成再输出时不可以获取id
8. 模糊查询
使用concat()
<select id="selectLike" resultType="com.ghx.entity.Student"> select * from t_student where name like concat('%',#{name},'%') </select>
9. 列名和属性名不一致的问题
1.起别名 别名与实体类的属性名相同
<select id="select" resultType="com.ghx.entity.UserInfo"> select id,name userName,password pwd,sex from t_userinfo </select>
2.
<resultMap id="TMap" type="com.ghx.entity.Teacher">type里面映射实体类id一行必须写,result 可以只写不同的
column 里面对应数据库里面的字段,property对应实体类里面的属性