1.解决属性和字段名不一致问题
(1)数据库字段
(2)实体类属性
private int id; //id
private String name; //姓名
private String password; //密码
(3)编写通过id查询用户的方法
dao接口
//根据ID查询用户
User getUserByID(int id);
接口实现类
<select id="getUserList" resultType="pojo.User">
select * from user
</select>
测试
@Test
public void getUserById() {
// 1
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 2
UserDao mapper = sqlSession.getMapper(UserDao.class);
// 3
User user = mapper.getUserByID(1);
System.out.println(user);
sqlSession.close();
}
(4)测试结果
可以看到查询出来的password为null
而此时数据库中id=1的用户的密码是123456
(5)解决方法
<1>给字段起别名
<select id="getUserByID" parameterType="int" resultType="pojo.User">
select * from user where id=#{id}
</select>
测试结果
<2>ResultMap(结果集映射)
<resultMap id="UserMap" type="User">
<result column="id" property="id"></result>
<result column="name" property="name"></result>
<result column="pwd" property="password"></result>
</resultMap>
<select id="getUserByID" parameterType="int" resultMap="UserMap">
select * from user where id=#{id}
</select>
测试结果
2.日志
(1)日志工厂
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
执行getUserById()方法
测试结果
(2)log4j
<1>导入Maven依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<2>配置log4j.properties
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/mybatis.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
执行getUserById()方法
测试结果
3.分页
使用 Limit分页
<1>sql语句
select * from user limit #{startIndex},#{pageSize};
<2>dao接口
//分页
List<User> getUserByLimit(Map<String,Integer> map);
<3>Mapper.xml
<!--分页-->
<select id="getUserByLimit" parameterType="map" resultType="User">
select * from user limit #{startIndex},#{pageSize};
</select>
<4>测试
@Test
public void getUserByLimit() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
hashMap.put("startIndex", 0);
hashMap.put("pageSize", 2);
List<User> userList = mapper.getUserByLimit(hashMap);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
测试结果