说说个人Mybatis学习记

前不久学完java基础,给本身安排的下一阶段的学习内容是框架Mybatis。说实话,还没开始学习Mybatis时,个人内心已经有点恐惧了,一是以为本身java基础掌握的不够扎实,二是像Mybatis这样的框架还有不少,到底什么时候才能学到头。仍是学学试试看吧
Mybatis简介:Mybatis在JDBC的基础上进行了封装,可以简化操控数据库的代码量。同时把java语句与sql语句分离开来,可使开发者专一于业务逻辑的实现。下面咱们来讲一下怎么照葫芦画瓢实现经过Mybatis查询数据库中的数据表。
pom.xml:首先新建一个maven项目,在pom.xml文件组中导入所需的jar包。有mybatis包、Mysql数据库链接包、日志包log4j、单元测试junit。java

<packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

主配置文件SqlConfig.xml: 咱们想用java程序控制sql语句对数据库进行操做,同时又想把sql语句独立出来,也要可以链接数据库的配置信息。解决思路是在一个文件中放入数据库配置信息,同时该文件又能搜索到书写sql语句的文件。能够看到该文件起到链接其它文件的做用,把该文件称为主配置文件。mysql

<environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <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>
    <!--配置映射文件的位置-->
    <mappers>
        <!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
        <package name="com.itheima.dao"/>
    </mappers>

User类:该类的成员变量与数据表的列名一一对应,是用来封装数据表的。
代理类IUserDao:为了在对数据库进行操做的方法不写sql语句,咱们使用代理类来执行对数据库的操做。代理类就是一个接口类,其中有一些未实现的对数据库进行操做的方法。sql

public interface IUserDao {
    List<User> findAll();
    /**
     * 保存方法
     * @param user
     */
    void saveUser(User user);

    /**
     * 更新用户
     * @param user
     */
    void updateUser(User user);

sql脚本配置文件IUserDao.xml:在该文件中写sql语句。测试类在调用IUserDao接口中的方法时,要可以实现对数据库的操做,因此这要求(1)可以识别对应的sql配置文件(2)而且找到须要的sql语句。sql配置文件名与IUserDao接口名一致可实现(1),sql配置文件中键id可实现sql语句与方法的对应。通常还需用键指明sql执行的结果封装到哪一个对象,传入sql的数据类型。数据库

<!--查询全部-->
    <select id="findAll" resultType="user">
        select * from user
    </select>

    <!--保存用户-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">
        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
    </insert>

测试类MybatisTest:
`public class MybatisTest {session

public static void main(String[] args)throws Exception {
    //1.读取配置文件
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    //2.建立SqlSessionFactory工厂
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(in);
    //3.使用工厂生产SqlSession对象
    SqlSession session = factory.openSession();
    //4.使用SqlSession建立Dao接口的代理对象
    IUserDao userDao = session.getMapper(IUserDao.class);
    //5.使用代理对象执行方法
    List<User> users = userDao.findAll();
    for(User user : users){
        System.out.println(user);
    }
    //6.释放资源
    session.close();
    in.close();
}

}`mybatis

相关文章
相关标签/搜索