如果使用 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. vue环境搭建及简单接触

    1.安装node环境 首先官网安装nodejs,下载地址https://nodejs.org/en/ 很多情况下,npm i 命令安装的包都是要科学上网的,或者就是国际网,下载速度很慢,不过有个淘宝镜 ...

  2. 字符串操作-格式化输出-Python

    字符串操作示例 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = ...

  3. Android中的“再按一次返回键退出程序”代码实现

    1 用户在退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用也是这么做的,但也有些应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友 ...

  4. git 出现错误 Could not resolve host: github.com 或者 gitlab.com 或者gerrit相关( 自有服务 )

    原来是因为github.com没有被主机给解析 1.第一步是 ping 你的gitlab 或者 github服务器ip地址 如果每隔几秒有 time = xx.ms 刷新 就证明是通的 2. 编辑 e ...

  5. Springboot集成MongoDB实现CRUD

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  6. JavaScript 正则的使用方法

    JavaScript正则方法 1.compile 编译一个正则表达式对象 rgExp.compile(pattern, [flags])  pattern字符串表达式 2.exec 在指定字符串中执行 ...

  7. DP&图论 DAY 2 下午

    DP&图论  DAY 2  下午 基础树形DP 前言◦ 1:与树或图的生成树相关的动态规划.◦ 2:以每棵子树为子结构,在父亲节点合并,注意树具有天然的子结构.这是很优美的很利于dp的.◦ 3 ...

  8. Creator性能优化

    性能优化主要这几个方面进行优化:加载优化,渲染优化,内存优化,CPU优化及一些小技巧. 加载优化 图片资源处理:巧用九宫格拉伸来实现资源得复用,如大的纯色背景图,完全可以使用一张小图来进行拉伸获得: ...

  9. Jsp中的四个域对象

    四个域对象: pageContext      page域 request          request域 session          session域 application       ...

  10. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg, 字符串内的其他字符不改变,给定函数,编写函数 void Stringchang(const char*input,char*output)其中input是输入字符串,output是输出字符串

    import java.util.Scanner; /*** * 1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg, 字符串内的其他字 ...