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
- mybatis学习-入门(1)-单独使用mybatis
- MyBatis学习(1):Mybatis使用详解和入门案例
- MyBatis学习(1)--MyBatis入门
- mybatis单独使用
- mybatis入门学习(1)
- Mybatis入门学习篇(一)之Mybatis Generator使用
- MyBatis(1):MyBatis入门
- MyBatis(1):MyBatis入门
- MyBatis(1):MyBatis入门
- MyBatis(1):MyBatis入门
- MyBatis(1):MyBatis入门
- ssm框架学习---mybatis单独使用各个文件编写
- MyBatis学习总结(1)——MyBatis快速入门
- Mybatis 学习 (2) mybatis入门
- Mybatis学习(1)-------------快速入门
- 【MyBatis学习02】MyBatis入门
- Mybatis入门(1)
- MyBatis学习总结[1]-入门
- PHP 中file_get_contents 超时问题
- 更新 hadoop eclipse 插件
- 3M HFE-7100(九氟丁基甲醚)新一代导热液
- StringUtils 开发中常用的字符串格式
- 游戏架构 一种经典的服务器架构
- mybatis学习-入门(1)-单独使用mybatis
- 一个90后IT毕业男的感悟
- 3DMax的OFusion插件使用问题
- Android 4.4, NFS 挂载
- 3D数学--学习笔记(一):笛卡尔坐标系、向量、矩阵初识
- 第7周作业1-循环大战
- linux上xl2tpd的安装和配置
- LeetCode: Valid Parentheses
- java动态代理原理剖析