mybatis入门配置案例

来源:互联网 发布:手机登录淘宝电脑版 编辑:程序博客网 时间:2024/05/17 22:47

一、配置数据库

0.导入jar包
导入jar包

  1. 将数据库配置文件放到JDBC.properties中

  2. 在src下创建conf.xml

<?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>    <!-- 数据源的加载 -->    <!--     加载数据库配置信息    JDBC.properties:        driverClassName=com.mysql.jdbc.Driver        url=jdbc\:mysql\://localhost\:3306/mydb        user=root        password=root    -->    <properties resource="JDBC.properties"></properties>    <environments default="development">        <!--environment 表示一个数据库连接 可以配置多个数据库连接 -->        <environment id="development">            <!--transactionManager 事务管理器 两种type类型 一般选择 JDBC -->            <transactionManager type="JDBC" />            <!-- 数据源 -->            <!-- jdbc四大连接参数 -->            <dataSource type="POOLED">                <!-- 驱动名称 -->                <property name="driver" value="${driverClassName}" />                <!-- url请求地址 -->                <property name="url" value="${url}" />                <property name="username" value="${user}" />                <property name="password" value="${password}" />            </dataSource>        </environment>    </environments>    <mappers>        <!-- 映射注册 include -->        <!-- resource 全路径 -->        <mapper resource="cn/wang/domain/UserMapper.xml" />    </mappers></configuration> 

二、配置实例类映射

1.XML方式实现

(1)定义SQL映射XML文件
文件名一般为 XxxMapper.xml
e.g.:UserMapper.xml

<?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"><!-- 表与类的映射文件 --><!-- namespace 命名空间 唯一 :格式 :当前文件所在包名+映射文件去掉后缀的文件名 (类名) --><mapper namespace="cn.wang.domain.UserMapper">    <!-- id标识 语句的唯一性 -->    <!-- resultType 全类名 -->    <select id="findAll" resultType="cn.wang.domain.User">        SELECT * FROM t_user    </select>    <!-- add添加 -->    <!-- parameterType表示参数类型 全类名 -->    <!-- 设置参数 用#{属性名称}表示值的获取 -->    <insert id="add" parameterType="cn.wang.domain.User">        insert into t_user        (username,password,adress) values(#{username},#{password},#{adress})    </insert>    <delete id="deleteById" parameterType="java.io.Serializable">        delete from t_user where        uid=#{uid}    </delete>    <update id="update" parameterType="cn.wang.domain.User">        update t_user set        username=#{username},password=#{password},adress=#{adress} where uid=#{uid}    </update>    <select id="findById" resultType="cn.wang.domain.User"        parameterType="java.io.Serializable">        select * from t_user where uid=#{uid}    </select></mapper>

(2)在配置文件conf.xml中注册映射接口

<mappers>        <!-- 映射注册 include -->        <!-- resource 全路径 -->        <mapper resource="cn/wang/domain/UserMapper.xml" />    </mappers>

2.注解方式实现

在方法上添加注解

package cn.wang.dao;import java.io.Serializable;import java.util.List;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;import cn.wang.domain.User;public interface UserDao {    @Select("SELECT * FROM t_user")    List<User> findAll();    @Insert("insert into t_user(username,password,adress) values(#{username},#{password},#{adress})")    void add(User user);    @Delete("delete from t_user where uid=#{uid}")    void deleteById(Serializable id);    @Update("update t_user set username=#{username},password=#{password},adress=#{adress} where uid=#{uid}")    void update(User user);    @Select("select * from t_user where uid=#{uid}")    User findById(Serializable id);}

三、编写utils类

package cn.wang.utils;import java.io.InputStream;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisUtils {    private static SqlSessionFactory sessionFactory=null;    static{        //读取配置文件        InputStream in=MyBatisUtils.class.getResourceAsStream("/conf.xml");        //获取sessionFactory        sessionFactory=new SqlSessionFactoryBuilder().build(in);    }    public static SqlSession getSession(){        //获取session        return sessionFactory.openSession();    }}

四、mybatis实现crud

package cn.wang.dao;import java.io.Serializable;import java.util.List;import org.apache.ibatis.session.SqlSession;import cn.wang.domain.User;import cn.wang.utils.MyBatisUtils;public class UserDaoImpl implements UserDao {    @Override    public List<User> findAll() {        // 获取session        SqlSession session = MyBatisUtils.getSession();        // 获取mapper        UserDao mapper = session.getMapper(UserDao.class);        // 查询所有用户        List<User> list = mapper.findAll();        // 关闭资源        session.close();        // 返回结果        return list;    }    @Override    public void add(User user) {        // 获取session        SqlSession session = MyBatisUtils.getSession();        // 获取mapper        UserDao mapper = session.getMapper(UserDao.class);        // 添加用户        mapper.add(user);        // 提交事务        session.commit();        // 关闭资源        session.close();    }    @Override    public void deleteById(Serializable id) {        // 获取session        SqlSession session = MyBatisUtils.getSession();        // 获取mapper        UserDao mapper = session.getMapper(UserDao.class);        // 删除用户        mapper.deleteById(id);        // 提交事务        session.commit();        // 关闭资源        session.close();    }    @Override    public void update(User user) {        // 获取session        SqlSession session = MyBatisUtils.getSession();        // 获取mapper        UserDao mapper = session.getMapper(UserDao.class);        // 修改用户        mapper.update(user);        // 提交事务        session.commit();        // 关闭资源        session.close();    }    @Override    public User findById(Serializable id) {        // 获取session        SqlSession session = MyBatisUtils.getSession();        // 获取mapper        UserDao mapper = session.getMapper(UserDao.class);        // 根据ID查询        User user=mapper.findById(id);        // 关闭资源        session.close();        return user;    }}