如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>

配置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> <!-- 别名
.类型别名 typeAlias type属性值为全类名 alias为别名
.根据包 name属性值为包名 别名为包内类名的小写
-->
<typeAliases>
<!-- <typeAlias type="com.tzh.bean.Clazz" alias="clazz"/>
<typeAlias type="com.tzh.bean.Student" alias="student"/> -->
<package name="com.tzh.bean"/>
</typeAliases> <environments default="default">
<environment id="default">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///1606a" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="com/tzh/mapper/*.xml" />
</mappers> </configuration>

创建beanSession工厂

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

package com.tzh.test;

import java.io.InputStream;

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 SqlSessionUtils { public static SqlSession getSqlSession() {
SqlSession sqlSession = null;
try {
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); sqlSession = sqlSessionFactory.openSession();
} catch (Exception e) {
e.printStackTrace();
}
return sqlSession;
}

创建mapper接口

package com.tzh.mapper;

import java.util.List;

import com.tzh.bean.Student;

public interface StuMapperDao {

    List<Student> getStuList(Student student);
List<Student> getStuListChoose(Student student); int updateStu(Student student); int addStu(List<Student> stuList ); int delStu(int [] arr);
}

sql语句

<?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">
<!-- namespace 对应的是接口的全名 -->
<mapper namespace="namespace">
<!-- student为别名 在核心配置文件设置 -->
<select id="getStuList" resultType="student" parameterType="student"> select * from 0802_stu
<!-- where = -->
<!-- 如果内部的判断条件成立,会自动加上where关键字,并且会把多余的and或者or去掉 -->
<where>
<if test="sname !=null and sname!='' ">
and sname like concat('%',#{sname},'%')
</if> <if test="sex!=null and sex!=''">
and sex =#{sex}
</if>
<if test="age >0 ">
and age &lt; #{age}
</if>
</where>
</select>
<select id="getStuListChoose" resultType="student"
parameterType="student"> select * from 0802_stu
<!-- where = -->
<!-- 如果内部的判断条件成立,会自动加上where关键字,并且会把多余的and或者or去掉 -->
<!-- <where> -->
<trim prefix="where" prefixOverrides="and |or ">
<!-- 条件成立在前面加上WHER关键词 并 prefixOverrides前缀覆盖 条件成立去挑前缀add|or--> <!-- choose when otherwise 用法和switch case break 类似 只运行一个条件都符合时运行第一个 -->
<choose>
<when test="sname !=null and sname!='' ">
and sname like concat('%',#{sname},'%')
</when>
<when test="sex!=null and sex!=''">
and sex =#{sex}
</when>
<otherwise><!-- 其他相当于else -->
and age &lt; #{age}
</otherwise>
</choose>
</trim>
<!-- </where> -->
</select> <update id="updateStu" parameterType="student">
update 0802_stu
<!-- SET 在内部的条件成立,就会加上set关键字,并且会把多余的逗号去掉 -->
<!-- <set> -->
<trim prefix="set" suffixOverrides=",">
<!-- suffixOverrides 去掉多余的 , -->
<if test="sname != null and sname !=''">
sname = #{sname},
</if>
<if test="sex !=null and sex != ''">
sex = #{sex},
</if>
<if test="age>0">
age = #{age}
</if>
</trim>
<!-- </set> -->
where sid= #{sid}
</update> <insert id="addStu" parameterType="list">
INSERT into 0802_stu (sname,sex,age,cid) VALUES
<!-- 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis。
当你这么做的时 候,MyBatis 会自动将它包装在一个 Map 中,用名称在作为键。
List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。 -->
<foreach collection="list" item="stu" separator=",">
(#{stu.sname},#{stu.sex},#{stu.age},#{stu.cid})
</foreach> <!-- ('隆多','男',,),
('隆多','男',,),
('隆多','男',,),
('隆多','男',,),
('隆多','男',,),
('隆多','男',,) --> </insert> <delete id="delStu" parameterType="java.lang.reflect.Array">
DELETE FROM 0802_stu WHERE sid in
<foreach collection="array" item="sid" open="(" separator="," close=")" >
#{sid}
</foreach>
</delete> </mapper>

测试

package com.tzh.test;

import java.util.ArrayList;
import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.tzh.bean.Student;
import com.tzh.mapper.StuMapperDao; public class TestDemo { @Test
public void testListLike() { SqlSession sqlSession = SqlSessionUtils.getSqlSession();
StuMapperDao mapper = sqlSession.getMapper(StuMapperDao.class);
Student student = new Student();
student.setSname("k");
student.setSex("男");
student.setAge(); //List<Student> stuList = mapper.getStuList(student);
List<Student> stuList = mapper.getStuListChoose(student);
for (Student student2 : stuList) {
System.out.println(student2);
} } @Test
public void testUpdate() { SqlSession sqlSession = SqlSessionUtils.getSqlSession();
StuMapperDao mapper = sqlSession.getMapper(StuMapperDao.class);
Student student = new Student();
student.setSname("k");
student.setSex("男");
//student.setAge(34);
student.setSid(); int updateStu = mapper.updateStu(student);
sqlSession.commit();
} @Test
public void testAdd() { SqlSession sqlSession = SqlSessionUtils.getSqlSession();
StuMapperDao mapper = sqlSession.getMapper(StuMapperDao.class);
Student student = new Student();
student.setSname("k");
student.setSex("男");
student.setAge();
student.setCid();
Student student1 = new Student();
student1.setSname("k");
student1.setSex("男");
student1.setAge();
student1.setCid();
Student student2 = new Student();
student2.setSname("k");
student2.setSex("男");
student2.setAge();
student2.setCid(); List<Student> stuList = new ArrayList<Student>(); stuList.add(student);
stuList.add(student1);
stuList.add(student2); int addStu = mapper.addStu(stuList); sqlSession.commit(); } @Test
public void testDel() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
StuMapperDao mapper = sqlSession.getMapper(StuMapperDao.class); int [] arr = {,,,,}; int delStu = mapper.delStu(arr);
sqlSession.commit();
} }

mybatis学习(一)不使用 XML 构建 SqlSessionFactory的更多相关文章

  1. mybatis源码探索笔记-1(构建SqlSessionFactory)

    前言 mybatis是目前进行java开发 dao层较为流行的框架,其较为轻量级的特性,避免了类似hibernate的重量级封装.同时将sql的查询与与实现分离,实现了sql的解耦.学习成本较hibe ...

  2. mybatis学习记录三——SqlMapConfig.xml相关参数详解

      5       SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容如下: properties(属性) settings(全局配置参数) ty ...

  3. Mybatis学习(三)XML配置文件之mybatis-config.xml

    1.MyBatis的配置文件结构 1.1 properties 这些是外部化的,可替代的属性,这些属性也可以配置在典型的 Java 属性配置文件中,或者通过 properties 元素的子元素来传递. ...

  4. Mybatis学习(二)常用对象SqlSessionFactory和SqlSession

    1.SqlSessionFactory SqlSeesionFactory对象是MyBatis的关键对象,它是一个数据库映射关系经过编译后的内存镜像. SqlSeesionFactory对象的实例可以 ...

  5. mybatis学习一:基于xml与注解配置入门实例与问题

    注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...

  6. Mybatis学习笔记(五) —— Mapper.xml(输入映射和输出映射)

    一.parameterType(输入类型) 1.1 传递简单类型 <!-- 根据用户id查询用户 --> <select id="queryUserById" p ...

  7. MyBatis学习笔记3--使用XML配置SQL映射器

    <resultMap type="Student" id="StudentResult"> <id property="id&quo ...

  8. 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结

    经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置 ...

  9. Mybatis学习笔记(四) —— SqlMapConfig.xml配置文件

    一.properties(属性) SqlMapConfig.xml可以引用java属性文件中的配置信息 在config下定义db.properties文件,如下所示: db.properties配置文 ...

随机推荐

  1. Android源码开发利器——Java源码调试(基于4.1.2)

     原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038     调试Android Java源码 草帽的后花园——Neo 写在之前的 ...

  2. Latex里的引用定理只出现编号,不出现定理名?

    在前面先定义了: \newtheorem{prb}{Problem Formulation} 然后: \begin{prb} \label{problem} xx\end{prb}效果: Proble ...

  3. POJ 3694 Network ——(桥 + LCA)

    题意:给n个点和m条边,再给出q条边,问每次加一条边以后剩下多少桥. 分析:这题是结合了LCA和dfn的妙用._dfn数组和dfn的意义不一样,并非访问的时间戳,_dfn表示的是被访问的顺序,而且是多 ...

  4. fastjson =< 1.2.47 反序列化漏洞浅析

    fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secq ...

  5. C++ this指针的理解

    先要理解class的意思.class应该理解为一种类型,象 int,char一样,是用户自定义的类型.虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型.用这个类型可以 ...

  6. 认识git的简单命令

    一.课程目的 教大家学会it的简单命令(老师建议 English 的前后要加空格) 二.认识 git 命令 整篇文章都是用语雀写的. 解释了(使用git)绑定gitee的操作 https://www. ...

  7. Java工具类-HttpUtil

    package com.sh.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import ...

  8. koa 基础(十)原生node.js 在 koa 中获取表单提交的数据

    1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...

  9. koa 基础(四)get 传值 以及获取 get 传值

    1.get 传值 以及获取 get 传值 app.js /** * get 传值 以及获取 get 传值 */ // 引入模块 const Koa = require('koa'); const ro ...

  10. Orcal nvl函数

    NVL(E1, E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身.但此函数有一定局限,所以就有了NVL2函数. 拓展:NVL2函数:Oracle/PLSQL中的一个函数,Oracl ...