Mybatis-03
一、继续上一部分的日志工厂
1、Log4j
什么是log4j:
log4j是apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台,文件,GUI组件
我们也可以控制每一条日志的输出格式
通过定义每一条日志信息的级别,我们能够更加细致的控制日志的生成过程
通过一个配置文件来灵活的进行配置,而不需要修改应用的代码
流程:
先导入log4j的包
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
写log4j的配置文件
#将等级为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/space.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.sql.PreparedStatement=DEBUG
在Mybatis核心配置中配置log4j为日志的实现
<settings> <setting name="logImpl" value="LOG4J"/> </settings>
log4j的使用:运行测试类,跟默认的日志s没啥区别
生成的日志文件
二、limit实现分页
//limit实现分页 List<User> getUserLimit(Map<String,Integer> map);
<!--因为现在我们的数据库列名和实体类的属性没有对齐,所以直接resultType会导致密码查不出来,所以在这里映射一下--> <resultMap id="UserName" type="User"> <result column="pwd" property="password"/> </resultMap> <select id="getUserLimit" parameterType="map" resultMap="UserName"> select * from user limit #{startIndex},#{pageSize} </select> <!--这里是正常情况下--> <select id="getUserLimit" parameterType="map" resultType="user"> select * from user limit #{startIndex},#{pageSize} </select>
@Test public void getUserLimit(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Map<String, Integer> map = new HashMap<>(); map.put("startIndex",0); map.put("pageSize",2); List<User> user = mapper.getUserLimit(map); for (User user1 : user) { System.out.println(user1); } sqlSession.close(); }
三、使用注解开发
//根据id拿到一个用户 @Select("select id,name,pwd as password from user") List<User> getUserById();
<!--使用注解开发就不需要mapper.xml了 直接在mybatis配置中配置mapper 通过class找到对应的接口就好了--> <mappers> <mapper class="space.urbeautiful.dao.UserMapper"/> </mappers>
@Test public void getUserById() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userById = mapper.getUserById(); for (User user : userById) { System.out.println(user); } sqlSession.close(); }
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。