注意,这篇文章只介绍mybatis单独使用时如何操作,是没有用到spring的,如果需要了解mybatis和spring如何搭建,请移步这里Mybatis(六):spring与mybatis三种整合方法

方式一:不使用mapper接口

步骤

1.pom文件里添加jar包

  1. <dependency>
  2. <groupId>org.mybatis</groupId>
  3. <artifactId>mybatis</artifactId>
  4. <version>3.3.0</version>
  5. </dependency>

2.准备Mybatis的配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.  
  7. <settings>
  8. <!-- 打印查询语句 -->
  9. <setting name="logImpl" value="STDOUT_LOGGING" />
  10. </settings>
  11.  
  12. <!-- 和Spring整合后environment配置都会被干掉 -->
  13. <environments default="development">
  14. <environment id="development">
  15. <!-- 使用jdbc事务管理,目前由mybatis来管理 -->
  16. <transactionManager type="JDBC" />
  17. <!-- 数据库连接池,目前由mybatis来管理 -->
  18. <dataSource type="POOLED"><!--有关于mysql数据库的各种信息-->
  19. <property name="driver" value="com.mysql.jdbc.Driver" />
  20. <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
  21. <property name="username" value="root" />
  22. <property name="password" value="123456" />
  23. </dataSource>
  24. </environment>
  25. </environments>
  26.  
  27. <mappers>
  28. <!--将操作配置文件User.xml系添加进mapper-->
  29. <mapper resource="mybatis/user.xml" />
  30. </mappers>
  31. </configuration>

更多的参数配置,参阅:Mybatis(一):MyBatis配置文件config.xml详解

3.准备实体类

  1. public class User {
  2.  
  3. private String id;
  4. private String password;
  5. private String username;
  6.  
  7. public String getId() {
  8. return id;
  9. }
  10. public void setId(String id) {
  11. this.id = id;
  12. }
  13. public String getPassword(){
  14. return password;
  15. }
  16. public void setPassword(String password){
  17. this.password=password;
  18. }
  19. public String getUsername(){
  20. return username;
  21. }
  22. public void setUsername(String username){
  23. this.username=username;
  24. }
  25. }

4.准备实体对应的mapper映射xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper namespace="user"> <!-- 注意,因为这边没有用到mapper接口,所以这里的namespace不需要是完全的类名 -->
  7.  
  8. <!-- 通过id查询用户 -->
  9. <select id="findUserById" parameterType="int" resultType="com.mvc.User">
  10. <include refid="selectStr"/> id = #{id}
  11. </select>
  12. <!--通过name查找一个list的用户,模糊匹配-->
  13. <select id="findUserByName" parameterType="java.lang.String" resultType="com.mvc.User">
  14. select * from user where name like '%${value}%'
  15. </select>
  16.  
  17. <!--插入用户信息-->
  18. <insert id="insertUser" parameterType="com.mvc.User">
  19. <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
  20. select uuid()
  21. <!-- 这里是对于主键属性的id进行赋值 -->
  22. </selectKey>
  23. insert into user(id,username,password) values(#{id},#{username},#{password})
  24. </insert>
  25. <!--删除用户信息-->
  26. <delete id="deleteUser" parameterType="java.lang.Integer">
  27. delete from user where id=#{id}
  28. </delete>
  29. <!--更新用户信息-->
  30. <update id="updateUser" parameterType="com.mvc.User">
  31. <!-- update user set name=#{name},password=#{password} where id=#{id} -->
  32. update user
  33. <set>
  34. <if test="username != null && username != ''">username=#{username},</if>
  35. <if test="password != null && password != ''">password=#{password},</if>
  36. </set>
  37. where id= #{id}
  38. </update>
  39. </mapper>

5.准备一个获取sqlsession的工具类

  1. import java.io.IOException;
  2. import org.apache.ibatis.io.Resources;
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  6.  
  7. public class MybatisSessionUtil {
  8.  
  9. static SqlSessionFactory sqlSessionFactory = null;
  10. static{
  11. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  12. try {
  13. sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. }
  17. }
  18.  
  19. public static SqlSession getSession(){
  20. return sqlSessionFactory.openSession();
  21. }
  22.  
  23. }

6.准备dao

  1. import org.apache.ibatis.session.SqlSession;
  2.  
  3. import com.mvc.User;
  4. import com.mybatis.mapper.User2Mapper;
  5.  
  6. public class UserDao {
  7.  
  8. SqlSession session = MybatisSessionUtil.getSession();
  9.  
  10. public int insert(User user){
  11. int rint = session.insert("user.insertUser",user); // 第一个参数是mapper xml里的namespace+MappedStatement对应的id
  12. session.commit();// 不要忘记提交
  13. return rint;
  14. }
  15. }

7.看下数据里user表

8.测试类

  1. import com.mvc.User;
  2. import com.mybatis.util.UserDao;
  3.  
  4. public class MybatisNoSpringTest {
  5.  
  6. public static void main(String[] args) {
  7.  
  8. UserDao userDao = new UserDao();
  9. User user = new User();
  10. user.setUsername("wwwttt");
  11. user.setPassword("33333");
  12.  
  13. if (userDao.insert(user) == 1) {
  14. System.out.println("insert success...");
  15. }else{
  16. System.out.println("insert fail...");
  17. }
  18.  
  19. }
  20.  
  21. }

方式二:使用mapper接口

步骤

1.pom文件里添加jar包

同方式一

2.准备Mybatis的配置文件

同方式一,就是换成新的user mapper xml

  1. <mappers>
  2. <!--将操作配置文件系添加进mapper-->
  3. <mapper resource="mybatis/User2Mapper.xml" />
  4. </mappers>

3.准备实体类

同方式一

4.准备mapper接口(这个是比方式一多出来的)

  1. import com.mvc.User;
  2.  
  3. // 这边接口名要和xml映射的文件名一致
  4. public interface User2Mapper {
  5.  
  6. int insertUser(User user);
  7.  
  8. // 其它方法略。。。
  9. }

5.准备实体对应的mapper映射xml文件

同方式一,只是namespace需要注意

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <!-- 这边的namespace一定要写完整正确 -->
  7. <mapper namespace="com.mybatis.mapper.User2Mapper">
  8. <!-- 通过id查询用户 -->
  9. <select id="findUserById" parameterType="int" resultType="com.mvc.User">
  10. select * from user where id = #{id}
  11. </select>
  12. <!--通过name查找一个list的用户,模糊匹配-->
  13. <select id="findUserByName" parameterType="java.lang.String" resultType="com.mvc.User">
  14. select * from user where name like '%${value}%'
  15. </select>
  16. <!--插入用户信息-->
  17. <insert id="insertUser" parameterType="com.mvc.User">
  18. <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
  19. select uuid()
  20. <!-- 这里是对于主键属性的id进行赋值 -->
  21. </selectKey>
  22. insert into user(id,username,password) values(#{id},#{username},#{password})
  23. </insert>
  24. <!--删除用户信息-->
  25. <delete id="deleteUser" parameterType="java.lang.Integer">
  26. delete from user where id=#{id}
  27. </delete>
  28. <!--更新用户信息-->
  29. <update id="updateUser" parameterType="com.mvc.User">
  30. update user set name=#{name},password=#{password} where id=#{id}
  31. </update>
  32.  
  33. </mapper>

6.准备一个获取sqlsession的工具类

同方式一

7.准备dao

  1. import org.apache.ibatis.session.SqlSession;
  2.  
  3. import com.mvc.User;
  4. import com.mybatis.mapper.User2Mapper;
  5.  
  6. public class UserDao {
  7.  
  8. SqlSession session = MybatisSessionUtil.getSession();
  9.  
  10. // 使用接口方式
  11. public int insert2(User user){
  12. User2Mapper user2Mapper = session.getMapper(User2Mapper.class);
  13. int rint = user2Mapper.insertUser(user);
  14. session.commit();
  15. return rint;
  16. }
  17.  
  18. }

8.测试类

  1. import com.mvc.User;
  2. import com.mybatis.util.UserDao;
  3.  
  4. public class MybatisNoSpringTest {
  5.  
  6. public static void main(String[] args) {
  7.  
  8. UserDao userDao = new UserDao();
  9. User user = new User();
  10. user.setUsername("wwwttt");
  11. user.setPassword("33333");
  12.  
  13. // 使用mapper接口方式
  14. if (userDao.insert2(user) == 1) {
  15. System.out.println("insert success...");
  16. }else{
  17. System.out.println("insert fail...");
  18. }
  19. }
  20.  
  21. }

方式三:使用mybatis框架的注解编写sql

这种方式,我不推荐使用,本来我们使用mybatis就是为了sql编写和java代码能分开解耦,有更大的灵活性,使用这种方式反而不好。

另外,myatis官方也不推荐这种方式,官方说了,要想使用mybatis强大的sql编写功能,写在注解里是受到限制的,只有写在mapper xml里才能发挥的玲离尽致。

所以,这种方法我就不记录了,有需要的同学自行百度。

Mybatis(五):Mybatis的三种使用方式的更多相关文章

  1. Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式

    第一种:先清除target目录 再重新compile编译 第二种:让idea重构项目 第三种 :手动添加到target目录下的classes包下

  2. MyBatis模糊查询的三种拼接方式

    1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} ...

  3. Spring Boot将Mybatis返回结果转为驼峰的三种实现方式

    本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:Spring Boot将Mybatis返回结果转为驼峰的三种实现方式: 我们通常获取Mybatis返回的数据结果时想要将字段以驼峰的形式返回 ...

  4. tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  5. 【转】tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  6. Map三种遍历方式

    Map三种遍历方式 package decorator; import java.util.Collection; import java.util.HashMap; import java.util ...

  7. Service组件 总结 + 绑定理Service三种实现方式 Messager + Binder + AIDL

    在Android中进程按优先级可以分为五类,优先级从高到低排列: - 前台进程 该进程包含正在与用户进行交互的界面组件,比如一个Activity - 可视进程 该进程中的组件虽然没有和用户交互,但是仍 ...

  8. C# 三种打印方式含代码

    一:C#代码直接打印pdf文件(打印质保书pdf文件) 引用: 代码注释很详细了. private void btn_pdf_Click(object sender, RoutedEventArgs ...

  9. Hive的三种Join方式

    Hive的三种Join方式 hive Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示. 参考链接:https://cwiki.apache.org/confluence/dis ...

  10. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

随机推荐

  1. Android电话拨打权限绕过漏洞(CVE-2013-6272)分析

    原文:http://blogs.360.cn/360mobile/2014/07/08/cve-2013-6272/ 1. CVE-2013-6272漏洞背景 CVE-2013-6272是一个安卓平台 ...

  2. Jquery 获取table当前行内容

    $("a[name='checkOriginal']").click(function () { var parent = $(this).parent().parent().fi ...

  3. Linux随笔(安装ftp,安装jdk,安装 tomcat,安装redis,安装MySQL,安装svn)

    su: authentication failure 解决办法:sudo passwd root  更改密码即可 确认虚拟机用到的联网方式是桥接模式,不然Windows是ping不通Linux的,确保 ...

  4. 【图解】javaScript组成结构

  5. spring mvc返回jsonp内容

    代码如下: import com.alibaba.fastjson.JSONPObject; @RequestMapping(value = "/method1") @Respon ...

  6. 转:Gerrit 学习

    转载:http://www.scmeye.com/thread-1665-1-1.html 入门Gerrit简介Gerrit是一个建立在Git版本控制系统之上,基于Web的代码审查工具,但如果你已经阅 ...

  7. mac 连接windows 共享内容

    mac 连接windows 共享内容 一:场景 在win7上下载了一个5G左右的系统文件,想弄到mac上,本打算用使用U盘,把文件从win7copy到mac电脑上: 可是U盘的分区是fat的,大于4G ...

  8. Java从零开始学三十八(JAVA IO- 重定向IO)

    一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重 ...

  9. Closing a window

    The obvious way to how to close a window is to click on the x mark on the titlebar. In the next exam ...

  10. 使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO

    写在前面 最近看到Gecoo爬虫工具,感觉比较简单好用,所有写个DEMO测试一下,抓取网站 http://zj.zjol.com.cn/home.html,主要抓取新闻的标题和发布时间做为抓取测试对象 ...