Mybatis初步使用(idea)

Mybatis配置

Mybatis配置文件模板设置(idea)

  1. 进入设置(File->setting),在设置界面找到(Editor->file and code templates)。
  2. files添加新文件,命名随意,语言为xml,把模板文件粘贴进文本编辑框保存。
  3. 然后新建文件列表中就有你添加的file模板了。在这里插入图片描述
    在这里插入图片描述
<?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>
    <properties resource=""/>
    <typeAliases>
 		<!--<typeAlias alias="" type=""/>-->
        <package name=""/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
        </dataSource>
    </environment>
    </environments>
    <mappers>
        <mapper resource=""/>
    </mappers>
 
</configuration>

Mybatis配置文件属性介绍

  • <configuration>:表示此文件为配置信息,所有的配置信息都要在标签里面。

  • <properties>:导入外部源,将数据库信息放到外部源中方便更改,<propreties resource=""/>[^1],同时此属性中也可以添加<property>属性,但是优先读取propreties中属性,后读取property属性,后读取属性会覆盖先读取的同名属性。

  • <typeAliases>:给需要与数据库联系的bean类重命名,否则在mapper文件中每次都要输入完整包名和类名很麻烦。

    重命名有两种设定方式:

    1. 添加属性<typeAlias alias="" type=""/>,alias中设置别名,type中设置bean类的包名和类名,这样只能指定这个bean,需要多个<typeAlias>。
    2. 添加属性<package name=""/>,name中设置bean所在包名,然后在每个bean类里使用@Alias(“”)注解,里面添加重命名的名字。
  • <environments>:这个标签里面可以添加多个环境,但是必须有一个环境,可以用default属性添加默认启动环境,当有多个环境时,首先使用default定义的环境。

  • <environment>:定义环境的标签,id属性为识别不同环境的唯一方法,即便只有一个环境,也要在default中声明。

  • <transactionManager>:有两个属性可以设置JDBC和MANAGED,JDBC属性的事务管理器通过JDBC本身的提交和回滚设置,依赖数据源来管理事务作用域;MANAGED属性的事务管理器则是通过容器来管理事务,使用这个属性的话,它会默认关闭链接,所以需要设置<property name=“closeConnection” value=“false”>。[^2]

  • <dataSource>:有三个属性可以设置UNPOOLED、POOLED、JNDI。UNPOOLED连接只在请求时才打开关闭,不会一直连接,每次相对较慢,但是适合请求较少的小程序;POOLED这种使用了连接池的方法,避免了每一次请求都要初始化连接和认证,更快,适应高并发程序;JNDI则是提供给EJB这类容器,现在不推荐。

  • <mappers>:用于加载映射器,可以加多个mapper文件,<mapper resource=""/>

Mybatis映射

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="">
     
</mapper>

mapper使用

  • namespace:里面写了当前mapper文件地址,后缀不需要,目录分级可以用".“也可以”/"。
  • 对数据库操作需要用对应标签,有<select><insert><delete><update>。
  • 每个操作需要有一个id,后面使用的时候,就是用对应id调用操作。如下
<select id="selectUser" resultMap="userMap">
        select * from user_tbl
</select>
//java中调用
String statement = "org.zhouyouwu.mapper.UserMapper.selectUser";
List<UserBean> userList = sqlSession.selectList(statement);
  • 插入操作、删除操作、更新操作,都需要输入值,所以需要parameterType、parameterMap两种属性,前者表示使用某一种类型,而后者则是需要定义的map类型。如下,输入的值为一个名为User的bean(如果没有用Alias,则parameterType=“com.package.User”)。[^3]
<insert id="addUser" parameterType="User">
        insert into userbean(user_id,username,password)
           values (#{userId},#{username},#{password})
</insert>
  • 选择操作会有返回值,所以需要resultType、resultMap两种属性,基本用法同上。(插入等操作的返回值默认为操作成功行数,所以固定是int,不需要指定)
  • 操作标签里使用相应数据库的操作语句,而#{}则是选择输入参数对应的java变量名,上面的例子就是选择了传入的User中userId的成员变量。需要注意的是,有多个参数传入变量名就没用了,需要用#{0}、#{1}等,参数下标来指定,或者把多个参数定义为parameterMap。
  • parameterMap,resultMap都是数据集,一个是输入、一个输出,定义了相应的map才可以输出输入多个参数。resultMap中id是用于引用的唯一属性,type则指定值的类型,里面的值<id>和<result>功能一样,都是用于把column(数据库字段名)和property(java变量名)连接起来,但是用了<id>则可以让查找更快,一般指定主键;parameterMap不推荐使用,它的class相当于type,因为是输入值,所以没有column属性。
<resultMap id="userMap" type="User">
        <id property="userId" column="user_id"/>
        <result property="password" column="password"/>
        <result property="username" column="username"/>
</resultMap>
<parameterMap id=”parameterMapName”   class=”User”>  
        <parameter property =”propertyName”   />  
       <parameter…… />  
       <parameter …… />  
</parameterMap>  

Mybatis直接使用

这种方法是初学者使用的方法,直接,更偏向面向过程,而不是面向对象,不推荐使用。
对应mapper文件中的命名空间指定为具体的mapper文件路径(后缀省略),在Java中直接调用此mapper。需要注意的是,删除、更新、插入这三个操作需要在完成后提交会话,否则不会更改数据库,sqlSession.commit();同时最好每次操作完成后,关闭连接,减少资源浪费,sqlSession.close();

String resource = "/mybatis-config.xml";//配置文件路径
            Reader reader = Resources.getResourceAsReader(resource);//读取配置文件
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);用对应的配置文件创建sqlsessionfactory
            SqlSession sqlSession = sqlSessionFactory.openSession();//开启会话

           String statement = "org.zhouyouwu.mapper.UserMapper.selectUser";
           List<UserBean> userList = sqlSession.selectList(statement);

Mybatis接口使用

这种方法则是用mybatis提供的接口,更为符合面向对象原则。
创建一个接口

public interface UserMapper {
    public int addUser(UserBean user);
    public List<UserBean> selectUserList();
    public UserBean selectUser(String userId);
}

mapper文件中命名空间就改为指定接口所在的包,同时操作语句都要与接口方法对应。如下,id对应接口方法的方法名,传入参数对应parameterType,如果有返回值也要对应resultType。

<insert id="addUser" parameterType="User">
        insert into userbean(user_id,username,password)
           values (#{userId},#{username},#{password})
</insert>

这样在调用方法时就,可以直接使用接口方法,而不用去定位相应mapper再使用。

public static void addUser(UserBean user){
        try {
            String resource = "/mybatis-config.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            SqlSession sqlSession = sqlSessionFactory.openSession();

            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//将接口映射
            int rusultInt = userMapper.addUser(user);
            sqlSession.commit();
            sqlSession.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值