mybatis-demo01

一:mybatis是什么?
mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。 mybatis通过xml 或注解的方式将要执行的各种statement配置起来,并通过java对象和statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并 返回。
二:mybatis的思想
采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc进行了封装,屏蔽了 jdbc api 底层访问细节,使我 们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。

三:mybatis的使用
1.创建maven工程
2.在pom.xml中添加mybatis的坐标 、junit的坐标、mysql的坐标、日志log4j
的坐标、同时作为测试的时候添加junit的坐标,有时候会因为中文报错添加

 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>9</java.version>
        <maven.compiler.source>9</maven.compiler.source>
        <maven.compiler.target>9</maven.compiler.target>
    </properties>

3.编写实体类:比如user
4.编写持久层接口 useDao
5.编写持久层接口的映射文件userDao.xml ,所在resource资源下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5.2.写mapper中namespace="userdao的包类" 然后下面就是配置所有的操作,增删改查
注意的是<select>或者其他中的id要与userdao中的方法一样

6.编写sqlMapConfig.xml配置文件
6.1同样的进行导入

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
 6.2 配置 <configuration> ->mybatis环境 -mysql的环境 ->配置事务的类型->配置数据库的信息,用的是数据源连接池(其中连接数据库的配置可以提取出来)如下
 6.3. 配置mappers 告知mybatis映射配置的位置 resource=“userdao/.xml”
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=admin
<configuration>
    <!--配置properties url就是上面的路径-->
    <properties url="file:///E:/javaSSM/mybatis/day01_mybatis_dao/src/main/resources/jdbcConfigure.properties">
<!--
    <properties resource="jdbcConfigure.properties">
-->
    </properties>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置mysql的环境-->
        <environment id="mysql">
            <!-- 配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <mapper resource="dao\IuserDao.xml"/>
    </mappers>
</configuration>
  1. 编写测试类,初始值的搭建
@Before
    public void init()
    {
    
    
        //1.读取配置
        is = Resources.class.getResourceAsStream("/X1sqlMybatisConfig.xml");
        //2.创建SqlSessionFactory工厂  mybatis使用了构建者模式(类似工厂)
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(is);
         sqlSession = factory.openSession();
        iuserDao = sqlSession.getMapper(IuserDao.class);

    }

此外:需要在resource下配置日志:log4j.properties

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{
    
    ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{
    
    ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

四:注解配置
1.在持久层接口中

public interface IUserDao {
    
        
 @Select("select * from user") 
  List<User> findAll(); } 

2.修改映射的配置文件

<mappers> 
 <mapper class="dao.IUserDao"/> </mappers> 

3.不建议使用,因为逻辑业务多了并不方便。

猜你喜欢

转载自blog.csdn.net/weixin_46809332/article/details/115468995
今日推荐