mybatis学习-入门(1)-单独使用mybatis

来源:互联网 发布:ios11智能拨号软件 编辑:程序博客网 时间:2024/04/29 16:14


mybatis的作用就不提了。

先写一个例子来说明mybatis的使用方法。

        要加载一些相关的依赖包。mybatis的相对比较简单,就只有Mybatis-3.1.1.jar ,当然还有这个包依赖的一些jar(从mybatis网站下载的zip中包括)

要让mybatis正常启动并能够起作用,首先我们需要一个 SqlSessionFactoryBuilder,这个类再调用.build(reader) 方法去创建一个SqlSessionFactory 类;

  --> SqlSessionFactory类再通过 .openSession() 方法去创建一个SqlSession

        -->SqlSession 就可以通过 .getMapper(Class<?> arg0) 来创建一个对应的mapper类了

             -->有了这个mapper类,后续的操作都通过mapper类完成

        

         告一段落,这里会有几个疑问:

         a SqlSessionFactoryBuilder 在创建SqlSessionFactory的时候,需要知道一些信息。比如数据源、mapper

        

 (1)实体类

         可以跟数据库结构完全一样,也可以有不同。比如我有一个user、 role、 user_role三个表,的user实体类可以完全对应user表,也可以添加一个 List<role>属性,表示该user对象的role列表,或者添加一个login_time属性记录登录时间等等。

         本例中user类与user表完全一致。

package example1.model;public class baiuser {private Long ID;private String USERNAME;private String PASSWORD;private Integer STATUS;private String DESCN;     然后是一堆get set方法......


(2)mapper

         有了实体对象,我们还需要有对实体对象到数据库的操作相关的方法,这就需要使用mapper类。

         maybatis中,使用接口+mapper文件的方式进行处理(先不管mybatis怎么实现的,目前仅记住是这样配置就好)。

         首先我们定义一个dao的接口

package example1.dao;import example1.model.baiuser;public interface baiuserMapper {int delete(Long ID);int insert(baiuser record);baiuser select(Long ID);int update(baiuser record);baiuser selectByUsername(String username);}


        然后编写一个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="example1.dao.baiuserMapper" >  <resultMap id="BaseResultMap" type="example1.model.baiuser" >    <id column="ID" property="ID" jdbcType="BIGINT" />    <result column="USERNAME" property="USERNAME" jdbcType="VARCHAR" />    <result column="PASSWORD" property="PASSWORD" jdbcType="VARCHAR" />    <result column="STATUS" property="STATUS" jdbcType="INTEGER" />    <result column="DESCN" property="DESCN" jdbcType="VARCHAR" />  </resultMap>    <sql id="Base_Column_List" >    ID, USERNAME, PASSWORD, STATUS, DESCN  </sql>    <select id="select" resultMap="BaseResultMap" parameterType="java.lang.Long" >    select     <include refid="Base_Column_List" />    from bai_user    where ID = #{ID,jdbcType=BIGINT}  </select>下面还有多个方法映射,与接口中定义的方法一致

        这样mybatis会根据配置,自动完成该接口的实现类。

        这里有几个要点:

        a    

<mapper namespace="example1.dao.baiuserMapper" >

        namespace 要与接口对应

        b   insert 或者update语句其输入参数要有

  <insert id="insert" parameterType="example1.model.baiuser" >


 (3)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><!-- 配置别名 --><typeAliases><typeAlias type="example1.dao.baiuserMapper" alias="baiuserMapper" /><typeAlias type="example1.model.baiuser" alias="baiuser" /></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/public?characterEncoding=GBK" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><!-- 配置mappers --><mappers><mapper resource="example1/mapper/baiuser-mapper.xml" /></mappers></configuration>   

           里面有别名配置、数据源、mapper配置。我们经常会将mybatis与spring整合在一起使用,那么mapper、数据源就可以在spring的配置文件中配置了,具体说来就是mybatis的SqlSessionFactory由spring容器进行创建,因此其需要的mapper与数据源作为其参数 。

 

好了,我们这个例子是不依赖于spring框架的,因此我们肯定要自己创建SqlSessionFactory和SqlSession等等。那么我们使用junit来创建一个测试类

package example1.test;import org.junit.Test;import org.junit.Before;import java.io.IOException;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;import example1.dao.baiuserMapper;import example1.model.baiuser;public class baiuserTest {        private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder;    private static SqlSessionFactory sqlSessionFactory;@Beforepublic void before(){        String resource = "example1/conf/mybatis-config.xml";        Reader reader;try {reader = Resources.getResourceAsReader(resource);        sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();        sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);} catch (IOException e) {e.printStackTrace();}}@Testpublic void test(){        SqlSession  session = sqlSessionFactory.openSession();        baiuserMapper userDao = session.getMapper(baiuserMapper.class);               baiuser user = userDao.select(1L);      System.out.println("user name is :  "+user.getUSERNAME()+"  password is : "+user.getPASSWORD());}}


 

 例子源码在:


http://download.csdn.net/detail/u013269938/7247525


 

  



 

 

 

 

 

 

 

 

 

 

        


 

 

         

 

 

        

0 0
原创粉丝点击