1、jar包的导入

  • mybatis需要jar包:mybatis-3.4.6.jar
  • mysql驱动jar包:mysql-connector-java-5.1.34.-bin.jar
  • 日志记录jar包:log4j-1.2.17.jar

2、创建数据库并创建表(mysql)

  • 注意数据库表字段命名的规范

3、添加日志配置文件(log4j.properties)

# Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout
# log4j.rootLogger=WARN, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

4、添加mybatis配置文件(mybatis.cfg.xml)

除数据库驱动,url,用户名,密码用自己实际的参数,其他的默认就可以

<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<!--数据库驱动-->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!--数据库url-->
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis"></property>
<!--数据库用户名-->
<property name="username" value="root" />
<!--数据库密码-->
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>

5、创建与数据库中表相关的实体类(POJO类)

  • 注意使用驼峰命名法

6、创建操作数据库的接口方法

    package cn.wfq.mybatis.mapper;

    import java.util.List;

    import cn.wfq.mybatis.model.User;

    public interface UserMapper {
/**
* 保存一条用户数据
* @param user
*/
public void saveUser(User user); /**
* 通过用户id获取一条记录
* @param id
* @return
*/
public User getOneUserById(int id); /**
* 修改用户数据
* @param user
*/
public void updateUser(User user); /**
* 根据id删除用户数据
* @param id
*/
public void deleteUser(int id); /**
* 获取所有用户数据
* @return
*/
public List<User> getAllUser();
}

7、添加操作数据表user的映射文件(userMapper.xml),并在mybatis.cfg.xml中注册

1、添加操作数据表user的映射文件(userMapper.xml)

<?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>标签用来使该xml文件与接口对应,'namespace'属性的参数应该是与xml文件相对应的接口的类路径,本例中就是我们第5步所写的'userMapper'接口-->
<mapper namespace="cn.wfq.mybatis.mapper.UserMapper"> <!--insert、select、update、delete四个标签即代表这增删改查,这里就不解释了 --> <!--4个标签中的id值要与接口的方法名一一对应,这样执行方法时,就会执行与方法名相同的id中的sql语句,在标签中写入sql语句 -->
<!--#{}这个符号表示要传入的参数,在`{}`中填入参数名 -->
<insert id="saveUser" useGeneratedKeys="true" keyProperty="id">
insert into user(name,age,reg_date) values
(#{name},#{age},#{regDate})
</insert>
<!--resutlType这个属性的参数是返回值类型的全类名 -->
<select id="getOneUserById" resultType="cn.wfq.mybatis.model.User">
select * from user where id = #{id}
</select>
<select id="getAllUser" resultType="cn.wfq.mybatis.model.User">
select * from user
</select>
<update id="updateUser">
update user set
name=#{name},age=#{age},reg_date=#{regDate} where id=#{id}
</update>
<delete id="deleteUser">
delete from user where id = #{id}
</delete>
</mapper>

2、在mybatis.cfg.xml中注册userMapper.xml

<mappers>
<!-- 告知映射文件方式1,一个一个的配置
<mapper resource="cn/wfq/mybatis/mapper/UserMapper.xml" /> -->
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
<package name="cn/wfq/mybatis/mapper" />
</mappers>

8、编写junit测试类

package cn.wfq.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; 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 org.junit.jupiter.api.Test; import cn.wfq.mybatis.mapper.UserMapper;
import cn.wfq.mybatis.model.User; class UserTest { /**
* 插入数据库测设
* @throws IOException
*/
@Test
void testInsertUser() throws IOException { //获取配置文件 mybatis.cfg.xml 的输入流
InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml"); //构建 sqlSessionFactory 实例
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream); //获取操作数据库的会话
SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User("晓东",18,new Date()); try {
userMapper.saveUser(user);
System.out.println(user.toString());
session.commit();
}finally {
session.close();
}
} /**
* 根据id获取一条数据测试
* @throws IOException
*/
@Test
void testGetOneUserById() throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User(); try {
user = userMapper.getOneUserById(10004);
System.out.println(user.toString());
session.commit();
}finally {
session.close();
}
} /**
* 获取所有数据
* @throws IOException
*/
@Test
void testGetAllUser() throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> list = new ArrayList<User>(); try {
list = userMapper.getAllUser();
for (User user : list) {
System.out.println(user.toString());
}
session.commit();
}finally {
session.close();
}
} /**
* 修改数据
* @throws IOException
*/
@Test
void testUpdateUser() throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User("晓东",10,new Date());
user.setId(10003);
try {
userMapper.updateUser(user);
System.out.println(user.toString());
session.commit();
}finally {
session.close();
}
} /**
* 删除数据
* @throws IOException
*/
@Test
void testDeleteUser() throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession(); UserMapper userMapper = session.getMapper(UserMapper.class);;
try {
userMapper.deleteUser(10003);
session.commit();
}finally {
session.close();
}
}
}

mybatis环境配置与入门例子的更多相关文章

  1. MyBatis环境配置及入门

    Mybatis 开发环境搭建,选择: MyEclipse8.5 版本,mysql 5.5, jdk 1.8, mybatis3.2.3.jar 包.这些软件工具均可以到各自的官方网站上下载. 整个过程 ...

  2. 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子

      本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...

  3. idea spring+springmvc+mybatis环境配置整合详解

    idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2. ...

  4. Mybatis环境配置学习

    Mybatis的使用环境配置步骤主要分为以下三步 1.导入jar包 2.创建mybatis的全局配置文件,并编写 3.创建mapper的配置文件 一.导入jar包 --- (踩坑:这一步中的导入mys ...

  5. CUDA学习,环境配置和简单例子

    根据摩尔定律,每18个月,硬件的速度翻一番.纵使CPU的主频会越来越高,但是其核数受到了极大的限制,目前来说,最多只有8个或者9个核.相比之下,GPU具有很大的优势,他有成千上万个核,能完成大规模的并 ...

  6. Python+Selenium笔记(一):环境配置+简单的例子

    #环境配置基于windows操作系统 #学习selenium要有一些HTML和xpth的基础,完全不会的建议先花点时间学点基础(不然元素定位,特别是xpth可能看的有点懵) #HTML :  http ...

  7. [教程] Spring+Mybatis环境配置多数据源

    一.简要概述 在做项目的时候遇到需要从两个数据源获取数据,项目使用的Spring + Mybatis环境,看到网上有一些关于多数据源的配置,自己也整理学习一下,然后自动切换实现从不同的数据源获取数据功 ...

  8. MyBatis环境搭建配置文件+入门视频下载

    1.MyBatis优点 操作简单话,代码量少,效率高,成本就降低了 2.MyBatis缺点 参数只能限制为一个 selece语都要手动来写 3.与JDBC的关系:是对JDBC的扩展 把sql语句和ja ...

  9. MyBatis环境配置

    <settings> <!-- 使全局的映射器启用或禁用缓存. --> <setting name="cacheEnabled" value=&quo ...

随机推荐

  1. SpringCloud系列二:Restful 基础架构(搭建项目环境、创建 Dept 微服务、客户端调用微服务)

    1.概念:Restful 基础架构 2.具体内容 对于 Rest 基础架构实现处理是 SpringCloud 核心所在,其基本操作形式在 SpringBoot 之中已经有了明确的讲解,那么本次为 了清 ...

  2. 同步锁Lock(互斥锁)

    同步锁作用: 在我当前包含(lock.acquire() 和 lock.release()之间 )的代码没有执行完成,不进行线程切换,必须等我执行完了,下一个线程才能继续执行(为什么要用同步锁,假如我 ...

  3. python接收html页面上传的文件

    使用的 flask, 没有安装的先安装 pip install flask 示例代码:示例没有自动创建静态文件夹,需要自己在同级 创建一个名为 static 的文件夹来存放上传的文件 示例展示为图片 ...

  4. 【Noip模拟 20160929】花坛迷宫

    题目描述 圣玛格丽特学园的一角有一个巨大.如迷宫般的花坛.大约有一个人这么高的大型花坛,做成迷宫的形状,深受中世纪贵族的喜爱.维多利加的小屋就坐落在这迷宫花坛的深处.某一天早晨,久城同学要穿过这巨大的 ...

  5. K8s之Etcd

    Etcd是一个开源的.高可用的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现.etcd与zookeeper相比算是轻量级系统,两者的一致性协议也一样,etcd的raft比zookeepe ...

  6. MySQL中基于mysqldump和二进制日志log-bin进行逻辑备份以及基于时间点的还原

    本文出处:http://www.cnblogs.com/wy123/p/6956464.html 本文仅模拟使用mysqldump和log-bin二进制日志进行简单测试,仅作为个人学习笔记,可能离实际 ...

  7. DRF的解析器和渲染器

    解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...

  8. LR基础理论详解

    本人参考了大神的博客(https://blog.csdn.net/cyh_24/article/details/50359055),写的非常详细,在此整理一下要点 逻辑斯蒂分布 基础公式了解 二项逻辑 ...

  9. 491. Increasing Subsequences增长型序列

    [抄题]: Given an integer array, your task is to find all the different possible increasing subsequence ...

  10. java通过年月得到该月每一天的日期

    public static List<String> getDayByMonth(int yearParam,int monthParam){ List<String> lis ...