首页 > 代码库 > mybatis的那些事

mybatis的那些事

转载请注明出处:http://www.cnblogs.com/yidaijiankuanzhongbuhui/p/7003993.html 

用mybatis一年多了,一直是别人搭好框架,配置好各种配置文件和导入jar包,然后自己知道怎么用!回过头来再重新整理学习mybatis,发现很多事如果自己亲手操作会更好!

mybatis 官方文档上对mybatis定义是:mybatis是一流的持久层框架,支持自定义sql、存储过程和高级映射!它消除了几乎所有的JDBC代码、手工设置参数和结果的检索!mybatis可以使用简单的XML或注释进行配置 映射文件、映射接口和Java pojo(普通的旧Java对象)到数据库记录。

mybatis的使用:

  • 首先从官方文档中下载jar包和源码包(地址为:https://github.com/mybatis/mybatis-3/releases)。并将jar包放到添加到类路径下;
  • 创建mybatis的xml配置文件(名字可以自己任意起)
  • 创建实体类的与数据库的映射文件
  • 创建数据库连接的SqlSessionFactory(即回话工厂,类似于数据库连接池),并获取回话
  • 执行sql 并取出结果 

具体操作:

  1. 创建一个动态web工程,将jar包( 见附件)放到lib目录下并built到类路径下。目录如下技术分享
  2. 创建mybatis的xml配置文件,xml文件中有关于数据库连接的参数配置,用来创建回话工厂SqlSessionFactory。暂时把该文件命名为mybatis_config.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>
    <environments default="development">
    <environment id="development">
    <transactionManager type="JDBC"/>
    <dataSource type="POOLED">
    <property name="driver" value="http://www.mamicode.com/com.mysql.jdbc.Driver"/>
    <property name="url" value="http://www.mamicode.com/jdbc:mysql://localhost:3306/test1"/>
    <property name="username" value="http://www.mamicode.com/root"/>
    <property name="password" value="http://www.mamicode.com/root"/>
    </dataSource>
    </environment>
    </environments>
    <mappers>
    <mapper resource="sqlMapper/chengjiMapper.xml"/>
    </mappers>
    </configuration>
    

     

  3. 首先需要在数据库test1中添加一个表,创建表的sql如下

    CREATE TABLE `chengji` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(11) DEFAULT NULL,
      `xueke` varchar(255) DEFAULT NULL,
      `fenshu` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1

    然后需要创建一个实体类:

    public class chengji {
        
        private Integer id;
        private String name;
        private String xueke;
        private Integer fenshu;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getXueke() {
            return xueke;
        }
        public void setXueke(String xueke) {
            this.xueke = xueke;
        }
        public Integer getFenshu() {
            return fenshu;
        }
        public void setFenshu(Integer fenshu) {
            this.fenshu = fenshu;
        }
        @Override
        public String toString() {
            return "Employee [id=" + id + ", name=" + name + ", xueke=" + xueke + ", fenshu=" + fenshu + "]";
        }
        
    }

    创建基于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" >
    <mapper namespace="sqlmapper.chengjiMapper" >
      <resultMap id="BaseResultMap" type="model.chengji" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="xueke" property="xueke" jdbcType="VARCHAR" />
        <result column="fenshu" property="fenshu" jdbcType="INTEGER" />
      </resultMap>
      
      <select id="selectByPrimaryKey" resultMap="BaseResultMap"  >
        select 
        *
        from chengji
        where id = #{id,jdbcType=INTEGER}
      </select>
      
      
    </mapper>

     

  4. 我们下面可以写一个test.java 来测试一下:

    public class test {
    
        public static void main(String[] args) {
            SqlSession session = getSqlSessionFactory().openSession();
            try {
                String resource = "conf/mybatis_config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                SqlSession session = sqlSessionFactory.openSession();
                chengji cj = session.selectOne("sqlmapper.chengjiMapper.selectByPrimaryKey", 4);
            System.out.println(cj.toString());
            } finally {
            session.close();
            }
        }
            
        }
    
    }

     

  5. 最后的打印结果是:chengji [id=4, name=gaoshan, xueke=yuwen, fenshu=99]

      

 

 

本文是作者原创,转载请标明

mybatis的那些事