zoukankan      html  css  js  c++  java
  • mybatis入门总结

    背景:

    最近“大胆地”把原本一个通过简单的JDBC连接数据库进行修改和查找操作的小项目改成用mybatis了。。

    周四得到任务,周一要完成的,说是要添加查询条件和添加查询字段,修改的字段也多了几个,才突然发觉简单的JDBC已经满足不了我了,改SQL实在不是一般的麻烦。

    因为之前在别人的框架上用过一点mybatis,觉得很是方便,所以决定试一试,把项目改成用mybatis的。

    不多说,进入正题。

    1.导包

    下载一个mybatis-3.1.1.jar,放到WEB-INF的lib下,并加入build path

    2.创建配置文件 conf.xml

    <!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://192.168.10.210:1433;DatabaseName=MyDB" />
                <property name="username" value="sa" />
                <property name="password" value="123456" />
            </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/chanbo/mapping/ResultBeanMapper.xml"></mapper>
        </mappers>
    </configuration>

    所有用到的mapper文件都要在<mappers>标签内配置,数据库的IP、端口、数据库名、用户名、密码都要根据实际情况配置好。

    3.使用时的代码 SQLOper.java

    import java.io.InputStream;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import com.betty.bean.ResultBean;
    import com.betty.mapping.IResultBeanMapper;
    
    public class SQLOper {
        public List<ResultBean> getResultByCount(int _count){
            InputStream is = SQLOper.class.getClassLoader().getResourceAsStream("conf.xml");
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
            SqlSession session = ssf.openSession();
    IResultBeanMapper rbm
    = session.getMapper(IResultBeanMapper.class); List<ResultBean> rb = rbm.getResultByCount(10);
    session.close();
    return rb; } }

    其中SqlSessionFactory及以上的部分可以抽取出来,放到类的构造器里面,避免每次调用方法时都要创建。

    如果是增删改的操作集合,要判断SQL语句返回的结果是否成功,根据情况进行session.commit();或者session.rollback();,最后都不要忘了session.close();(听说mybatis3以上的版本会自动close)。


    4.mapper接口

    import java.util.List;
    
    import org.apache.ibatis.annotations.Param;
    import com.betty.bean.ResultBean;
    
    public interface IResultBeanMapper {
        List<ResultBean> getResultByCount(@Param("count") int _count);
    }


    5.mapper文件 ResultBeanMapper.xml

    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.betty.mapping.IResultBeanMapper">
        <select id="getResultByCount" resultType="com.betty.bean.ResultBean">
            select top ${count} 
            name,age
            from user 
        </select>
    </mapper>


    6.bean文件 ResultBean.java

    就是一个普通的POJO,就不贴代码了。

    对于操作mapper还有另一种不需要接口的方式:

    <mapper namespace="com.betty.mapping.ResultBeanMapper">

        <select id="getResultByCount" parameterType="int" resultType="com.betty.bean.ResultBean">

             select top ${count}

             name,age

             from user

        </select>

    </mapper>

    使用时:

    List<ResultBean> rb = session.selectList("com.betty.mapping.ResultBeanMapper", _count);

    也是可以获取到数据的,但是这样的话就只能传一个入参,很多时候都没办法满足需要,所以才有了使用mapper接口这样的方式。

    代码只提炼了有用的部分,这样比较简明扼要,细微错误稍加修改即可。

    未完待续。

  • 相关阅读:
    ios界面布局整理
    android ProGuard 代码混淆实现
    mac版 android破解软件下载安装
    在unix系统下的 .o文件 .a文件 .so文件说明和相互关系
    android中的广播接收实现总结
    用java的jdk 生成android 的jni接口文档
    Android 自定义Application
    android项目中配置NDK自动编译生成so文件
    创建android Notification
    (ios) nsnotification总结
  • 原文地址:https://www.cnblogs.com/bettyling/p/5681710.html
Copyright © 2011-2022 走看看