mybatis--HelloWorld

1.创建一张测试表
2.创建对应的javaBean
3.创建mybatis配置文件,sql映射文件

4.测试

mybatis操作数据库

1.创建mybatis全局配置文件

   mybatis全局配置文件包含了影响mybatis行为的设置和属性信息,如数据库连接池信息

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfiguration
PUBLIC"-//mybatis.org//DTDConfig3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environmentsdefault="development">
        <environmentid="development">
            <transactionManagertype="JDBC"/>
            <dataSourcetype="POOLED">
                <propertyname="driver"value="com.mysql.jdbc.Driver"/>
                <propertyname="url"value="jdbc:mysql://localhost:3306/mybatis"/>
                <propertyname="username"value="root"/>
                <propertyname="password"value="123456"/>
            </dataSource>
        </environment>
    </environments>
</configuration>
2.创建sql映射文件
作用: 相当于定义Dao接口的实现类如何工作

如何运行: 1>.根据xml配置文件, 利用SqlSessionFactoryBuilder创建一个SqlSessionFactory对象 有数据源一些运行环境信息

SqlSessionFactorysqlSessionFactory=getSqlSessionFactory();

Public SqlSessionFactory getSqlSessionFactory()throws IOException{
    String resource="mybatis-config.xml";
    InputStreaminputStream=Resources.getResourceAsStream(resource);
    Return newSqlSessionFactoryBuilder().build(inputStream);
}
2>使用SqlSessionFactory获取sqlSession实例,一个SqlSession对象代表和数据库的一次会话,能直接执行已经映射的sql语句
SqlSessionopenSession=sqlSessionFactory.openSession();

3>使用SqlSession根据方法id进行操作

Employee employee = openSession.selectOne(
"com.kwy.mybatis.EmployeeMapper.selectEmp", 1);

这个就存在一个问题, 每次要增删改查, sqlid很长. 而selectOne,我们也知道, 后面可以是对象啊,如果上面我把1换成了字符串"abc", 数据库中类型不应该, 肯定有问题呀. 接下来mybatis就给我们提供了一个更高级一点的方式:使用接口, 接口来描述给定的sql语句和返回值.

1.创建一个Dao接口
2.修改mapper文件

3.测试

使用SqlSession获取映射器进行操作

与上面的区别就是替换了第三步: 

//获取接口的实现类对象
//会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
Employee employee=mapper.getEmpById(1);

小结

1.接口式编程:
原生: Dao --->DaoImpl
mybatis: Mapper --->xxMapper.xml
2. 在这个过程中, 有一个非常重要的对象 SqlSeesion代表和数据库的一次会话. 每次使用完成后需要正确关闭,这个关闭操作是必须的. 同时它不是线程安全的.所以不能共享.不能这么写: private SqlSession sqlSession, 有可能A线程把这个sqlSession用了,给关了, B线程还去拿它了. 
3.mapper接口没有实现类,mybatis会为这个接口生成一个代理对象(接口和xml绑定)
4.这里有两个重要的配置文件
  一个是我们称之为:全局配置文件,包含数据库连接池信息,事务管理器信息等系统运行环境信息
 当然也可以不用这个全局配置文件, 但是一定包含了系统运行信息了.
 sql映射文件: 保存了每一个sql语句的映射信息. 将sql抽取出来.关键部分抽取出来,不像hibernate整个都是黑箱子.

猜你喜欢

转载自blog.csdn.net/kwy15732621629/article/details/79675504