目录
1.MyBatis 入门程序开发步骤
SqlSession:代表Java程序和数据库之间的会话。(HttpSession是Java程序和浏览器之间的会话)
SqlSessionFactory:是“生产”SqlSession的“工厂”。
工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象。
注意1:默认采⽤的事务管理器是:JDBC。JDBC事务默认是不提交的,需要⼿动提交。
public void addStu() { //1:第一步:mybatis提供了一个专门用来从java程序连接mysql数据库的对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); //2:创建qlSessionFactory InputStream is = StudentTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml"); //InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("mybatis-config.xml"); //InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 3. 创建SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //喏自动提交括号写true //4: 执行sql语句 受影响的行数 sqlSession.insert(""); sqlSession.commit(); sqlSession.close(); }
2..引入日志框架logback
引⼊⽇志框架的⽬的是为了看清楚mybatis执⾏的具体sql。 启⽤标准⽇志组件,只需要在1.mybatis-config.xml⽂件中添加以下配置:【可参考mybatis⼿册】
mybatis-config.xml
<settings> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings>
2.引⼊logback相关依赖
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> <scope>test</scope> </dependency
3.引⼊logback相关配置⽂件(⽂件名叫做logback.xml或logback-test.xml,放到类路径 当中)
logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义⽇志⽂件的存储地址--> <property name="LOG_HOME" value="/home"/> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncode r"> <!--格式化输出:%d表示⽇期,%thread表示线程名,%-5level:级别从左显示5 个字符宽度%msg:⽇志消息,%n是换⾏符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logge r{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天⽣成⽇志⽂件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAp pender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRolling Policy"> <!--⽇志⽂件输出的⽂件名--> <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--⽇志⽂件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncode r"> <!--格式化输出:%d表示⽇期,%thread表示线程名,%-5level:级别从左显示5 个字符宽度%msg:⽇志消息,%n是换⾏符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logge r{50} - %msg%n</pattern> </encoder> <!--⽇志⽂件最⼤的⼤⼩--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTrig geringPolicy"> <MaxFileSize>100MB</MaxFileSize> </triggeringPolicy> </appender> <!--mybatis log configure--> <logger name="com.apache.ibatis" level="TRACE"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> <!-- ⽇志输出级别,logback⽇志级别包括五个:TRACE < DEBUG < INFO < WARN < ER ROR --> <root level="DEBUG"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> </configuration>
3.MyBatis⼯具类SqlSessionUtil的封装
public class SqlSessionUtil { private static SqlSessionFactory sqlSessionFactory; /** * 类加载时初始化sqlSessionFactory对象 */ static { try { SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSes sionFactoryBuilder(); sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.g etResourceAsStream("mybatis-config.xml")); } catch (Exception e) { e.printStackTrace(); } } /** * 每调⽤⼀次openSession()可获取⼀个新的会话,该会话⽀持⾃动提交。 * * @return 新的会话对象 */ public static SqlSession openSession() { return sqlSessionFactory.openSession(true); } }
4.Mybatis传参数问题(方式)
1.arg0传参数
2.param传参数
3.@Param别名参数
4.$字符串拼接 #占位
<select id="queryUserByNameAndPwd" resultType="com.hu.pojo.User"> select * from user where uname='${tom}' and password='${jerry}' select * from user where uname=#{arg0} and password=#{arg1} select * from user where uname=#{param1} and password=#{param2} select * from user where uname=#{tom} and password=#{jerry} </select>
User queryUserByNameAndPwd(@Param("tom") String uname,@Param("jerry") String pwd); User queryUserByNameAndPwd(String uname,String pwd);