Mybatis 学习笔记

原创 2016年08月30日 11:05:16

.初步接触Mybatis

1.加入jar

mybatis-3.2.6.jar

mysql-connector-java-5.1.36-bin.jar

 

2.配置mybatis-config.xml

小知识: mybatis-config\mybatis-mapper XML 的自动提示需要下载两个dtd

http://mybatis.org/dtd/mybatis-3-config.dtd

http://mybatis.org/dtd/mybatis-3-mapper.dtd

Window >> Preferences >> XML >> XML Catalog>> Add

Location : 下载的文件

Key: URL : 上面的地址

 

例:

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEconfiguration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""mybatis-3-config.dtd" >

<configuration>

<!-- development:开发模式

 work: 工作模式

 

POOLED:关闭数据链接是进入连接池

Unpooled: 是直接关闭

 -->

<environmentsdefault="development">

<environmentid="development">

<transactionManagertype="JDBC"></transactionManager>

<dataSourcetype="POOLED">

<propertyname="driver" value="com.mysql.jdbc.Driver"/>

<propertyname="url" value="jdbc:mysql:///test"/>

<propertyname="username" value="root"/>

<propertyname="password" value="wxniit"/>

</dataSource>

</environment>

</environments>

</configuration>

 

3.配置实体类的映射xml

例:

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEmapper SYSTEM " http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mappernamespace="com.chenj.app.mapping.department">

  <select id="getDepartment"parameterType="int"resultType="com.chenj.app.entity.Department">

         select * from departmentwhere id = #{id}

  </select>

</mapper>

 

4.mybatis-config.xml中加载实体类 的映射XML

例:

<configuration>

<environmentsdefault="development">

/..

</environments>

 

<mappers>

<mapperresource="com/chenj/app/mapping/department.xml"/>

</mappers>

 

 

</configuration>

 

5.测试

例:

Stringresource="config.xml";

InputStreamis = test.class.getClassLoader().getResourceAsStream(resource);

SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(is);

SqlSessionsession = sqlSessionFactory.openSession();

Stringstatement="com.chenj.app.mapping.department.getDepartment";

Department  department=session.selectOne(statement, 1);

System.out.println(department);

.Mybatis CRUD 操作

     1.基于XML

配置SQL

<mappernamespace="com.chenj.app.mapping.department">

  <select id="getDepartment"parameterType="int"resultType="com.chenj.app.entity.Department">

         select * from departmentwhere id = #{id}

  </select>

 

  <insert id="addDepartment"parameterType="com.chenj.app.entity.Department">

         insert  into department(id,name) value(#{id},#{name})

  </insert>

 

  <update id="updateDepartment"parameterType="com.chenj.app.entity.Department">

         update department setname=#{name} where id=#{id}

  </update>

 

  <delete id="delDepartment"parameterType="int">

         delete from departmentwhere id=#{id}

  </delete>

 

  <select id="getAllDepartment"resultType="com.chenj.app.entity.Department">

         select * from department

  </select>

</mapper>

 

 

测试用例

---------------------------------------获取SqlSessionFactory的工具

publicclass MybatisUtils {

 

publicstatic SqlSessionFactory getFactory(){

InputStreamis = test.class.getClassLoader().getResourceAsStream("config.xml");

SqlSessionFactoryfactory = new SqlSessionFactoryBuilder().build(is);

returnfactory;

}

 

}

----------------------------------------测试

 

@Test

publicvoid addDepartment() {

SqlSessionFactoryfactory = MybatisUtils.getFactory();

SqlSessionsession = factory.openSession(true);

Stringstatement = "com.chenj.app.mapping.department.addDepartment";

intinsert=session.insert(statement, new Department(3,"aa"));

System.out.println(insert);

}

 

@Test

publicvoid updateDepartment(){

SqlSessionFactoryfactory = MybatisUtils.getFactory();

SqlSessionsession = factory.openSession(true);

Stringstatement = "com.chenj.app.mapping.department.updateDepartment";

intupdate=session.update(statement, new Department(3,"bb"));

System.out.println(update);

}

 

@Test

publicvoid delDepartment(){

SqlSessionFactoryfactory = MybatisUtils.getFactory();

SqlSessionsession = factory.openSession(true);

Stringstatement = "com.chenj.app.mapping.department.delDepartment";

intdelete=session.delete(statement, 3);

System.out.println(delete);

}

 

@Test

publicvoid findDepartmentByID(){

SqlSessionFactoryfactory = MybatisUtils.getFactory();

SqlSessionsession = factory.openSession(true);

Stringstatement = "com.chenj.app.mapping.department.getDepartment";

Departmentdepartment=session.selectOne(statement, 1);

System.out.println(department);

}

 

@Test

publicvoid findAllDepartment(){

SqlSessionFactoryfactory = MybatisUtils.getFactory();

SqlSessionsession = factory.openSession(true);

Stringstatement = "com.chenj.app.mapping.department.getAllDepartment";

List<Department>result = session.selectList(statement);

System.out.println(result);

}

 

 

  2.基于注解

2.1定义接口,无需实现类

publicinterface Department {

 

@Select(value= { "select * from department where id = #{id}" })

publiccom.chenj.app.entity.Department getDepartment(int id);

 

@Update("updatedepartment set name=#{name} where id=#{id}")

publicint udpateDepartment(com.chenj.app.entity.Department department);

 

@Insert("insert  into department(id,name) value(#{id},#{name})")

publicint addDepartment(com.chenj.app.entity.Department department);

 

@Delete("deletefrom department where id=#{id}")

publicint delDepartment(int id);

 

@Select("select* from department")

publicList<com.chenj.app.entity.Department> getAllDepartment();

 

}

 

2.2主配置中加载这个接口类mapping

<mappers>

<!--<mapperresource="com/chenj/app/mapping/department.xml"/>-->

<mapper class="com.chenj.app.mapper.Department"/>

</mappers>

 

2.3测试

主要是通过 SqlSession.getMapper(接口.class) 获取这个接口

@Test

publicvoid add(){

SqlSessionFactoryfactory = MybatisUtils.getFactory();

SqlSessionsession = factory.openSession(true);

com.chenj.app.mapper.Departmentdepartment = session.getMapper(com.chenj.app.mapper.Department.class);

intadd=department.addDepartment(new Department(5,"aaaa"));

System.out.println(add);

session.close();

}

 

 

 

3.取别名

<typeAliases>

    <packagename="com.chenj.app.entity"/>

<!--<typeAlias type="com.chenj.app.entity.Department"alias="department"/> -->

</typeAliases>

 

当使用package的时候别名为类的简名称

 

  1. 一对一联表

例:

 <select id="getEmployee"parameterType="int" resultMap="getEmployeeMap">

                  select*,d.name dname from employee e left join department d on e.departmentid=d.idwhere e.id = #{id}

   </select>

   <resultMap type="Employee"id="getEmployeeMap">

                  <idproperty="id" column="id"/>

                  <resultproperty="name" column="name"/>

                  <resultproperty="salary" column="salary"/>

                  <associationproperty="department" javaType="Department">

                          <idproperty="id" column="departmentid"/>

                          <resultproperty="name" column="dname"/>

                  </association>

   </resultMap>

 

  1. 一对多

resultMap 里加 collection

例:

      <collectionproperty="list" ofType="Student">

                          <id/>

                          <result/>

                  </collection>

版权声明:本文为博主原创文章,未经博主允许不得转载。

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015年05月12日 11:06
  • 934

springmvc+mybatis学习笔记(汇总)

笔记内容主要是mybatis和springmvc的一些基本概念和使用方法,涉及概念介绍、环境搭建、编程细节、运行调试等方面。 这套笔记整体偏入门和应用,适合快速上手,对底层实现和机理并未做过多分析。...
  • h3243212
  • h3243212
  • 2016年03月30日 16:20
  • 12474

Spring与MyBatis整合(学习笔记)

首先,需要引入Maven依赖。在原有的Spring 和Mybatis的依赖的基础上在引入mybatis-spring和DBCP        org.mybatis     my...
  • zhangsunxiaobai
  • zhangsunxiaobai
  • 2016年12月08日 21:28
  • 169

JAVA学习笔记18——MyBatis框架第一章

转载请联系我并注明出处: 隔了一段时间,将之前所学习的SSH整合了一段时间,然后也通过一些项目锻炼了一下自己的编码能力,现在终于有时间来写写最近学习的内容了,那么言归正传,今天我们要来讲讲的就是M...
  • woshizisezise
  • woshizisezise
  • 2017年12月12日 21:34
  • 1993

Mybatis学习笔记(一):入门

之所以要看一下mybatis是因为我们这边的一个项目,从最初的使用dbutils转为使用半自动化的mybatis,虽然记得最初使用mybatis那已经是两年前的事情了。不禁感叹时间过的真快,而自己的提...
  • chenpeng19910926
  • chenpeng19910926
  • 2017年02月06日 11:50
  • 136

PostgreSQL学习笔记--PostGIS

catmaid项目中,今天发现一个新的东西PostGIS 其实PostGIS在配置catmaid时就已经安装了,但没有留意是什么功能关于PostGIS PostGIS 是 PostgreSQL 关...
  • haohaibo031113
  • haohaibo031113
  • 2016年10月15日 18:58
  • 140

Mybatis学习笔记(3)之高级功能

高级功能 映射关系 一对一映射 SQL语句:用户订单查询 SELECT  orders.*,   USER.username,  USER.sex,  USER.address FROM  ord...
  • dfsaggsd
  • dfsaggsd
  • 2016年01月21日 15:33
  • 1013

JBPM6学习笔记(二)创建JBPM工程:helloworld

在所有插件都安装完之后,就可以尝试创建流程了。
  • a4307515
  • a4307515
  • 2014年07月07日 14:13
  • 1660

mybatis学习笔记(3)-入门程序一

工程结构在IDEA中新建了一个普通的java项目,新建文件夹lib,加入jar包,工程结构如图。...
  • h3243212
  • h3243212
  • 2016年02月27日 19:55
  • 4066

mybatis学习笔记(一) 项目搭建,helloworld实例

前言:之前一直使用hibernate在作为数据层的持久化框架,也用过mybatis,但是觉得要写的sql太多很麻烦, 所以使用的不多 。 现在进入阿里巴巴淘点点项目组之后发现他们在数据层使用的是myb...
  • is_zhoufeng
  • is_zhoufeng
  • 2013年12月08日 22:04
  • 7488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mybatis 学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)