public interface UserDao { ListgetUserList(); User getUserById(int i); int addUser(Map user); }
insert into `user` (id,name,pwd) values (#{userid},#{username},#{userpwd});
@Test public void addUser() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao userDao = sqlSession.getMapper(UserDao.class); HashMapmap = new HashMap<>(); map.put("userid",8); map.put("username","徐徐"); map.put("userpwd",333333); userDao.addUser(map); sqlSession.commit(); sqlSession.close(); }
一、容易出现问题:xml中的mapper映射
1、映射类:(如果类和xml不在一个包里,那么就不能使用class映射)
2、扫描包下所有的,xml,和接口的文件名必须一摸一样
3、推荐使用:mapper resource映射
二、
SqlSessionFactoryBuilder 一旦创建,就不再需要它了
SqlSessionFactory,实际就是连接池,生命周期和程序一直存在
SqlSession 连接请求,最佳作用域方法中,用完赶紧关闭,否则资源被占用。
三、数据库中的字段和属性名不一致的解决
1、起别名 pwd as password
2、resultMap映射
四、日志工厂
1、基础的
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/kuang.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.appender.file.Threshold=ERROR ,如果设置ERROR,那么info 和 debug都不会输出,如果设置debug,就都会输出,相当于等级
实际使用中,和system.out.println("info")一样,作为输出使用,只不过log4j会存在日志中,而且可以设置等级
在需要sout 的地方
1、先加载对象
public class UserDaoTest { static Logger logger = Logger.getLogger(UserDaoTest.class); }
2、添加到需要输出日志地方 @Test public void testLog4j(){ logger.info("info"); logger.debug("debug"); logger.error("error");