.Net 玩Java 第二篇:Mybatis

看了一下官网。他的作用在于代码和sql语句分离。可以用xml写sql语句。自动根据代码生成灵活的sql语句。减少了界面大量的字符串和拼接动态sql的不灵活。另外可以根据提取的结果直接设置返回的结果为对象。。。。似乎。Mybatis For Net 更强大,吐槽下,Java的注释式编程,比C#的特性编程似乎差的有点远啊。。。。。。ok。接下来跟着官网的例子搞起来。。。。

说一下几个类先:SqlSessionFactoryBuilder(这是工厂类的祖先,一个程序基本用一次扔掉就可以了)

SqlSessionFacotry(用来生成连接的,一个就够了,用单例实现)

SqlSession(一次连接用一个,跟C#的SqlConnection差不多。。。。)

Mapper实例。(Session返回的东西,就是最底层的直接可以调用数据库的东西,可以调用接口方法。也是玩完就扔的。)

说下框架逻辑:

通过mybatis设置文件。XML格式的。一句话概括的话。应该是怎么连接数据源。获取SqlSessionFacotryBuilder。这种当然单例模式包装下。需要自己写。

然后通过Builder获取SqlSession单例对象。这个相当于一个连接,所以每次都要释放。

然后通过SqlSession获取实体类的Mapper对象,对象根据Mapper设置文件(mybatis设置文件中有引用)中设置的sql语句(可以用很多灵活的配置)获取数据,框架自动把获取的信息根据列名赋值到实体类。并且返回。当然这其中可以传参数之类的。。。。一般都是一个表一个实体类,一个mapper设置。

比JDBC直接用好在Sql语句可以配置,很灵活,并且可以根据列返回实体对象。不用自己一个一个属性去set了。

不说了。上核心代码:

第一个是创造factory的。用了单例

public class SqlHelper {
    private static SqlSessionFactory factory;

    public static SqlSessionFactory getFactory() throws IOException {
        if (null == factory) {
            String path = ("com/leiming/data/mybatis-config.xml");
            InputStream input = Resources.getResourceAsStream(path);
            factory = new SqlSessionFactoryBuilder().build(input);
        }
        return factory;
    }
}

主程序:

public class App {
    public static void main(String[] args) {
        try {
            SqlSessionFactory factory = SqlHelper.getFactory();
            try (SqlSession session = factory.openSession()){
                Person p = session.selectOne("com.leiming.data.PersonMapper.selectPerson",1004);
                System.out.println(p.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

一个实体类,要自己写

public class Person{
    private int personID;
    public int getPersonID(){
        return personID;
    }
    public void setPersonID(int value){
        personID = value;
    }
    private int accountID;
    public int getAccountID(){
        return accountID;
    }
    public void setAccountID(int value){
        accountID = value;
    }
    @Override
    public String toString(){
        return String.format("%d,%d",personID,accountID);
    }
	
    
}

两个配置文件,也没什么花头。这个设置是mybatis的核心。因为内容太多,我们这里只是最最简单的调用。我们针对最核心的代码来演示。

mybatis设置,重要的在中间,所有的设置在官网可以看到。主要就是地址。驱动类什么的。和jdbc差不多。主要里面有mapper的引用。

<?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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
                <property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=MyDB"/>
                <property name="username" value="sa"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/leiming/data/PersonMapper.xml"/>
    </mappers>
</configuration>

mapper配置

<?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="com.leiming.data.PersonMapper">
    <select id="selectPerson" resultType="com.leiming.data.Person">select * from [leon].[Person] where PersonId = #{id}</select>
</mapper>

运行主程序就能读取数据了。具体怎么配置,不详细说了。官网都有。这里还是一个学习的记录吧。仅仅最核心的代码。


说下感觉:这个配置很多东西,比直接调用要复杂的多。好处在于实现和逻辑分离。编译过程很多次因为字符串的设置问题导致编译失败,运行失败。好在sqlserver驱动微软也提供了maven。获取很方便。

之后会做一些学习spring的学习过程记录。希望对新手有点用。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值