myBatis环境搭建的三种方式

1、MyBatis的使用简介:
MyBatis是java开发过程中应用的持久层框架,对JDBC进行了封装,在使用MyBatis进行开发时更关注与SQL本身。
在学习MyBatis环境搭建时主要学习了三种方法:注解开发、dao接口映射文件代理类开发以及使用dao层实现类。
2、以下主要对MyBatis环境搭建进行代码分析:
2.1、注解方式开发:
2.1.1、 MyBatis主配置文件:

<?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">
<!-- mybatis的主配置文件 -->
<configuration>
    <!--MyBatis 的数据库配置-->
    <environments default="mysql">
        <!--配置mySql数据库-->
        <environment id="mysql">
            <!--配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库源 数据库连接池-->
            <dataSource type="POOLED"><!--数据库连接池-->
                <!--连接数据库的四个基本属性-->
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>--><!--数据库驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><!--数据库连接地址-->
                <property name="username" value="root"/>  <!--数据库连接用户名-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--指定映射配置文件的位置;
    如果使用注解开发,则mapper标签中使用的是class属性,值为被注解的dao层(持久层)的全限定类名(例如:myBatis/dao/IUserDao)-->
        <mapper class="myBatis.inerface.IUserDao"/>
    </mappers>
</configuration>

2.1.2、dao层的映射注解接口文件:

package myBatis.inerface;

import Model.userModel;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface IUserDao {

    @Select("select * from user")   //注解开发
    List<userModel> findAll();
}

2.1.3、user表对应的封装类:

  
    package Model;

import java.io.Serializable;
import java.util.Date;

/**
 * user实体类
 */
public class userModel implements Serializable {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "userModel{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex=" + sex +
                ", address='" + address + '\'' +
                '}';
    }
}

2.1.4、读取配置文件,测试方法:

 /**读取mybatis总的配置文件**/
        //读取mybatis配置文件
        InputStream ins = Resources.getResourceAsStream("mybatis_SqlConfig.xml");
        //创建工厂类
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory ssf = builder.build(ins);

        //使用工厂类创建SqlSession对象
        SqlSession ss = ssf.openSession();

        //使用SqlSession创建dao层的动态代理类
        IUserDao iUserDao = ss.getMapper(IUserDao.class);
        //使用代理对象执行方法
        List<userModel> list = iUserDao.findAll();
        for (userModel user: list) {
            System.out.println(user);
        }
        //释放资源
        ss.close();
        ins.close();

上述为MyBatis注解开发的代码实现,运行测试方法后的运行结果为:

userModel{id=21, username=‘张三’, birthday=Tue Feb 27 17:47:08 CST 2018, sex=男, address=‘上海’}
userModel{id=32, username=‘李四’, birthday=Fri Mar 02 15:09:37 CST 2018, sex=女, address=‘深圳’}
userModel{id=43, username=‘王五’, birthday=Sun Mar 04 11:34:34 CST 2018, sex=女, address=‘北京重庆’}
userModel{id=45, username=‘赵柳’, birthday=Sun Mar 04 12:04:06 CST 2018, sex=男, address=‘北京’}
userModel{id=46, username=‘秦宝’, birthday=Wed Mar 07 17:37:26 CST 2018, sex=男, address=‘郑州’}
userModel{id=48, username=‘马莉’, birthday=Thu Mar 08 11:44:00 CST 2018, sex=女, address=‘济南’}

2.2、使用接口代理类实现:
此处需要着重说明的是,直接使用dao层接口方式进行持久层的开发,要保证以下三点:
1)保证.xml映射文件的路径与dao层接口映射.java文件的包路径一直(此处领路径不一致经过测试也可行,只要保证映射正确):

2)sql的映射文件和dao层接口文件都相当于是mapper文件,要保证sql映射文件中的namespace属性中的值为接口文件的路径名称:
在这里插入图片描述在这里插入图片描述
3).xml映射文件中sql对应的id值与dao层接口中的方法名保持一致:
在这里插入图片描述
在这里插入图片描述
* 满足上述情况在myBatis中可以使用映射接口文件的代理类进行数据库访问开发,不再需要些接口的实现类
2.2.1、MyBatis的主配置文件:

 <?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">
<!-- mybatis的主配置文件 -->
<configuration>
    <!--MyBatis 的数据库配置-->
    <environments default="mysql">
        <!--配置mySql数据库-->
        <environment id="mysql">
            <!--配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库源 数据库连接池-->
            <dataSource type="POOLED"><!--数据库连接池-->
                <!--连接数据库的四个基本属性-->
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>--><!--数据库驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><!--数据库连接地址-->
                <property name="username" value="root"/>  <!--数据库连接用户名-->
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--指定映射配置文件的位置; -->
        <mapper resource="myBatis/dao/IUserDao.xml"/>
    </mappers>
</configuration>

2.2.2、接口方法:

package myBatis.inerface;

import Model.userModel;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface IUserDao {
    List<userModel> findAll();
}

2.2.3、SQL映射文件:

<?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">

<mapper namespace="myBatis.inerface.IUserDao">
    <select id="findAll" resultType="Model.userModel">
        select * from user
    </select>
</mapper>

2.2.4、测试方法:

 //读取mybatis配置文件
        InputStream ins = Resources.getResourceAsStream("mybatis_SqlConfig.xml");
        //创建工厂类
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory ssf = builder.build(ins);
        //

        //使用工厂类创建SqlSession对象
        SqlSession ss = ssf.openSession();

        //使用SqlSession创建dao层的动态代理类
        IUserDao iUserDao = ss.getMapper(IUserDao.class);
        //使用代理对象执行方法
        List<userModel> list = iUserDao.findAll();
        for (userModel user: list) {
            System.out.println(user);
        }
        //释放资源
        ss.close();
        ins.close();

经测试,运行结果与2.1相同。
2.3、dao层实现类方式:
2.3.1、MyBatis总的配置文件(ImplClass.xml):

<?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">
<configuration>
    <environments default="MySql">
        <environment id="MySql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="sqlMapper/user.xml"/>
    </mappers>
</configuration>

2.3.2、SQL映射文件(user.xml):

<?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">
<mapper namespace="user">
    <select id="findAll" resultType="Model.userModel">
        select * from user
    </select>
</mapper>

2.3.3、dao层实现类:

package myBatis.dao;

import Model.userModel;
import myBatis.inerface.IUserDao;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

public class UserDao implements IUserDao {

    private SqlSessionFactory factory = null;//用于接收创建数据库连接时的工厂类方法

    public UserDao(SqlSessionFactory factory){
        this.factory = factory;
    }

    @Override
    public List<userModel> findAll() {
        SqlSession ss = factory.openSession();
        List<userModel> list = ss.selectList("user.findAll");
        ss.close();//释放资源
        return list;
    }
}

2.3.4、测试方法:

* 拥有实现类的mybatis的环境搭建
        //读取配置文件
        InputStream in = Resources.getResourceAsStream("ImplClass.xml");
        //创建工厂对象
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        SqlSessionFactory ssf = ssfb.build(in);
        //将创建的工厂对象传递给持久层-dao层的实现类构造方法中
        UserDao ud = new UserDao(ssf);
        List<userModel> list = ud.findAll();
        for ( userModel model: list) {
            System.out.println(model);
        }
        in.close();

在MyBatis的环境搭建时,学习并使用了上述三种方法,希望有一些帮助,时间仓促,整理不够细致,如有疏漏或想法可留言交流。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值