- 使用map传参
//修改用户信息,之前是传一个User,但是有的时候我们只需要id和pwd,这个时候用map,并且map可以自己定义键,如果用User就只能用User里面的属性名 int updateUser(Mapmap);
UPDATE mybatis.user set id=#{id},pwd=#{pwd} WHERe id=#{id}
@Test
public void updateUser() {
SqlSession sqlSession = myBatisUtil.getSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//此处使用hashmap插入所需要输入的属性和对应的值
HashMap map = new HashMap();
map.put("id",1);
map.put("pwd", "bbbb");
int res=mapper.updateUser(map);
if (res>0) {
System.out.println("修改成功"+res);
}
sqlSession.commit();
sqlSession.close();
}
- 模糊查询
//查询全部用户
List getUserList(String s);
@Test
public void getUserList() {
SqlSession sqlSession= myBatisUtil.getSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//此处是查询名字中带有张的用户的信息
String s="%张%";
//此处是查询名字只有两个字并且第一个字为张的用户信息
String s="张_"
List list=mapper.getUserList(s);
for (User user : list) {
System.out.println(user);
}
}
config.xml文件的优化
- 从外部文件导入数据库配置
//在configration里面添加propertoes属性 // //注意此处的变化,导入外部文件以后可以直接用 ${} 的形式来获取配置文件里面的东西
- 取别名,给实体类取了别名之后就不用再写包路径了
//方式一,在configration里面加上//方式二,把一个包路径下面的类都给起上别名,默认是类名,但是如果有注解,注解是其别名
- 注意第二种方式,如果有注解的话,注解是其别名
- 问题:如果javabean的属性名是password,数据库的字段名是pwd,查出来结果会有问题,password是null
数据库 id name pwd
javabean id anme password
//查出来的结果中pwd是null
User{id=1, name='张三疯', password='null'}
- 解决办法:用结果集映射resultmap
//在UserMapper.xml里面加上resultMap的配置日志工厂//这两行可以不要,因为是属性名和字段一样的
- 第一种,STDOUT_LOGGING 标准的日志工厂
//在 config.xml文件里面加上//输出结果-----非常详细 Opening JDBC Connection Created connection 789219251. Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2f0a87b3] ==> Preparing: SELECT * from mybatis.user WHERe id=? ==> Parameters: 1(Integer) <== Columns: id, name, pwd <== Row: 1, 张三疯, bbbb <== Total: 1 User{id=1, name='张三疯', password='bbbb'} Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2f0a87b3] Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@2f0a87b3] Returned connection 789219251 to pool. //STDOUT_LOGGING是标准日志工厂,配置上就能直接用
- 第二种,LOG4J 常用
- 需要导入包,在maven里面也就是导入依赖
log4j log4j 1.2.17
- 在config.xml文件里面配置
- 在resource目录下添加资源配置文件log4j.properties
#将等级为DEBUG的日志信息输出到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/xu.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
-
即可输出日志
-
log4j简单使用
- 导包千万别导错了
import org.apache.log4j.Logger; //必须是这个包才行
- 写如下代码进行简单测试
package com.gqx.test; import org.apache.log4j.Logger; public class Hello { static Logger logger = Logger.getLogger(Hello.class); public static void main(String[] args) { logger.info("测试info"); logger.debug("测试debug"); logger.error("测试error"); } } //输出 [com.xu.dao.UserDaoTest]-测试info [com.xu.dao.UserDaoTest]-测试debug [com.xu.dao.UserDaoTest]-测试error
- 问题
- 出现了新导入的log4j依赖没有生效的问题
- 解决办法:刷新一下maven
- 使用sql实现分页
//SELECt * from user LIMIT pageIndex,pageSize SELECt * from user LIMIT 0,2 //查询出第一个第二个用户
- 使用mybatis实现分页,核心还是sql
//接口 ListgetUserByLimit(Map map);
//接口对应配置文件//此处是配置结果集映射 SELECT * from mybatis.user limit #{pageIndex},#{pageSize}
@Test
public void getUserByLimit() {
SqlSession sqlSession = myBatisUtil.getSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//此处用的是Map传参
HashMap map = new HashMap();
map.put("pageIndex", 0);
map.put("pageSize", 3);
List list=mapper.getUserByLimit(map);
for (User user : list) {
System.out.println(user);
}
sqlSession.close();
}



