一、日志:找bug
方法:设置setting
1、系统默认日志工厂,字母必须完全写对,多一个空格都不行
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
2、log4j
1、先导包
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2、创建log4j.properties资源文件;
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/rzp.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sq1.PreparedStatement=DEBUG
3、配置setting
<settings>
<setting name="logImpl" value="log4j"/>
</settings>
4、测试运行
二、分页、limit
SELECT * from user limit startIndex,pageSize
startIndex:从第几个元素开始
pageSize :多少个元素为一页
三、resultMap
解决数据库字段与实体类名字不一致的问题
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!--column数据库中的字段,property实体类中的属性-->
<result column="id" property="id"></result>
<result column="name" property="name"></result>
<result column="pwd" property="password"></result>
</resultMap>
<select id="getUserList" resultMap="UserMap">
select * from USER
</select>
四、使用注解开发
优点:不再对Mapper.xml写sql语法
直接在方法上方写注解
@Select("select * from users")
List<User> getUserlist();
缺陷:实体类与数据库表字段必须一一对应
使用注解CRUD
区别不大 ;只是有参数(除了引用类型)时需要加@param注解
@Delete("delete from users where userName=#{userName}")
void deleteUser(@Param("userName")String userName);
用#{}不用${},前者能防止sql注入
五、自动提交事务
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);//设置为true
}