MyBatis

目录

1.MyBatis 入门程序开发步骤

2..引入日志框架logback

3.MyBatis⼯具类SqlSessionUtil的封装

4.Mybatis传参数问题(方式)


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);

mybatis 传递参数的7种方法_mybatis传入对象参数_独钓寒江雪~的博客-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值