使用mybatis开发步骤

来源:互联网 发布:网络语鸡肋是什么意思 编辑:程序博客网 时间:2024/05/16 12:35

1 导包

这里写图片描述

2 搭建项目的整体架构

这里写图片描述

3 编写工具类

package com.util;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MybatisUtils {    private static SqlSessionFactory sqlSessionFactory;    static {        try {            Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (Exception e) {            e.printStackTrace();        }    }    public static SqlSession getSqlSession() {        return sqlSessionFactory.openSession();    }}

4 编写配置文件

<?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>    <typeAliases>        <!-- 别名方式1,一个一个的配置,type中放置的是类的全路径,alias中放置的是类别名 -->        <typeAlias type="com.entity.User" alias="User"/>        <!-- 列名方式2,自动扫描,将Java Bean的类名作为类的别名 -->        <!-- <package name="com.entity"/> -->    </typeAliases>    <!-- 配置开发环境 -->    <environments default="development">        <environment id="development">            <!-- type="JDBC"代表使用JDBC的提交和回滚来管理事务 -->            <transactionManager type="JDBC"/>            <!-- mybatis提供了3种数据源类型,分别是:POOLED、UNPOOLED、JNDI                 POOLED:mybatis实现简单的数据库连接池,它使得数据库连接可以复用,不必在每次请求时创建一个新的连接。                UNPOOLED:表示不支持数据源连接池。                JNDI表示支持外部数据源连接池。                -->            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/test"/>                <property name="username" value="root"/>                <property name="password" value="123456"/>            </dataSource>        </environment>    </environments>    <!-- 配置映射文件 -->    <mappers>        <!-- 配置映射文件方式1,一个一个的配置 -->        <mapper resource="com/dao/UserDaoMapper.xml"/>        <!-- 配置映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->        <!-- <package name="com/dao"/> -->    </mappers></configuration>

5 编写实体类和Dao接口

6 编写映射文件

<?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.dao.UserDaoMapper">    <!-- 如果实体类的属性名与表的字段名不同时 -->    <resultMap type="User" id="userMap">        <id property="id" column="id" javaType="java.lang.Integer"/>        <result property="username" column="username" javaType="java.lang.String"/>        <result property="password" column="password" javaType="java.lang.String"/>        <result property="sex" column="sex" javaType="java.lang.String"/>        <result property="age" column="age" javaType="java.lang.Integer"/>    </resultMap>    <select id="findById" parameterType="int" resultType="User">        select * from user             where id=#{id}    </select>    <select id="fingByCondition" parameterType="User" resultMap="userMap">        select * from user where 1=1            <if test="username!=null">                and username like#{username}            </if>            <if test="sex!=null">                and sex#={sex}            </if>            <if test="age!=null">                and age#={age}            </if>    </select>    <select id="findAll" resultType="User">        select * from user    </select>    <insert id="saveUser" parameterType="User">        insert into user            (id,             username,             password,             sex,             age)        values            (#{id},             #{username},             #{password},             #{sex},             #{age})    </insert>    <update id="updateUser" parameterType="User">        update user set            username=#{username},            password=#{password},            sex=#{sex},            age#={age}        where id=#{id}    </update>    <delete id="removeUser" parameterType="int">        delete from user            where id=#{id}    </delete></mapper>

7 编写Dao接口的实现类

package com.dao.impl;import java.io.Serializable;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.dao.UserDao;import com.entity.User;import com.util.MybatisUtils;public class UserDaoImpl implements UserDao {    @Override    public User findById(int id) {        SqlSession session = MybatisUtils.getSqlSession();        User user = session.selectOne("com.dao.UserDaoMapper.findById", id);        session.close();        return user;    }    @Override    public List<User> findByCondition(User user) {        SqlSession session = MybatisUtils.getSqlSession();        List<User> userList = session.selectList("com.dao.UserDaoMapper.findByCondition");        session.close();        return userList;    }    @Override    public List<User> findAll() {        SqlSession session = MybatisUtils.getSqlSession();        List<User> userList = session.selectList("com.dao.UserDaoMapper.findAll");        session.close();        return userList;    }    @Override    public Serializable saveUser(User user) {        SqlSession session = MybatisUtils.getSqlSession();        int result = -1;        try {            result = session.insert("com.dao.UserDaoMapper.saveUser", user);            session.commit();        } catch (Exception e) {            session.rollback();            e.printStackTrace();        } finally {            session.close();        }        return result;    }    @Override    public Serializable removeUser(int id) {        SqlSession session = MybatisUtils.getSqlSession();        int result = -1;        try {            result = session.delete("com.dao.UserDaoMapper.removeUser", id);            session.commit();        } catch (Exception e) {            session.rollback();            e.printStackTrace();        } finally {            session.close();        }        return result;    }    @Override    public Serializable updateUser(User user) {        SqlSession session = MybatisUtils.getSqlSession();        int result = -1;        try {            result = session.update("com.dao.UserDaoMapper.updateUser", user);            session.commit();        } catch (Exception e) {            session.rollback();            e.printStackTrace();        } finally {            session.close();        }        return result;    }}
原创粉丝点击