Mybatis简单入门

来源:互联网 发布:七天网络查询成绩注册 编辑:程序博客网 时间:2024/05/21 17:24
  • 一、创建项目导入相应的jar包(数据库驱动包和mybatis jar包)
  • 二、在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>    <!-- 配置别名 -->    <typeAliases>        <typeAlias type="com.pojo.User" alias="User" />        <typeAlias type="com.dao.UserDao" alias="UserDao" />    </typeAliases>    <!-- 配置环境变量 -->    <environments default="development">        <environment id="development">            <transactionManager type="JDBC" />            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver" />                <property name="url"                    value="jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8" />                <property name="username" value="root" />                <property name="password" value="" />            </dataSource>        </environment>    </environments>    <!-- 配置mappers -->    <mappers>        <mapper resource="com/dao/UserDao.xml" />    </mappers></configuration>  
  • 三、根据数据表字段建立实体类,需要一一对应关系
package com.pojo;public class User {    private int userId;    private String userName;    private String passWord;    public int getUserId() {        return userId;    }    public void setUserId(int userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }    @Override    public String toString() {        return "User [userId=" + userId + ", userName=" + userName + ", passWord=" + passWord + "]";    }}
  • 四、建立操作映射文件
<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的     例如namespace="com.dao.IUserDao"就是com.dao(包名)+IUserDao(.xml文件去除后缀)    如果使用接口,namespace必须要和定义的接口全名一样--> <mapper namespace="com.dao.IUserDao">     <!--    在select标签中编写查询的SQL语句, 设置select标签的id属性为              getUser,id属性值必须是唯一的,不能够重复   使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型          resultType="com.pojo.User"就表示将查询结果封装成一个User类的对象返回          User类就是users表所对应的实体类     -->     <!-- 根据id查询得到一个user对象-->    <!-- 如果使用getmapper id必须要和接口定义的方法一样 -->     <select id="getUserById" parameterType="int"          resultType="User">         select * from user where userId=#{userId}    </select></mapper>
  • 五、建立操作接口
package com.dao;import com.pojo.User;public interface IUserDao {public User getUserById(int userId);}
  • 六、dao类
package com.dao;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;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 MyBatisBaseDao {    public static SqlSessionFactory sqlSessionFactory;    public static SqlSessionFactoryBuilder sqlSessionFactoryBuilder;    public static SqlSession session;    // mybatis的配置文件    public static String resource = "conf.xml";    static {        // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)        InputStream is = UserDao.class.getClassLoader().getResourceAsStream(resource);        try {            // 构建sqlSession的工厂            // SqlSessionFactory sessionFactory = new            // SqlSessionFactoryBuilder().build(is);            // 使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)            Reader reader = Resources.getResourceAsReader(resource);            // 构建sqlSession的工厂            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);            // 创建能执行映射文件中sql的sqlSession            session = sessionFactory.openSession();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}测试:public class UserDao extends MyBatisBaseDao {    public User findUserById(int userId) {        String statement = "com.dao.IUserDao.getUserById";// 映射sql的标识字符串        // 执行查询返回一个唯一user对象的sql        // UserDao.init();        System.out.println(session);        /**使用mybatis的代理 方法一*/        IUserDao DAO=session.getMapper(IUserDao.class);        User user=DAO.getUserById(8);        /**方法二**///      User user = session.selectOne(statement, userId);        System.out.println(user);        return user;    }    public static void main(String[] args) {        UserDao dao = new UserDao();        dao.findUserById(8);    }}

注:也可以不使用接口

0 0
原创粉丝点击