Mybatis环境搭建及测试
1、新建java project,导入相应jar包
本次使用到的mybatis-3.2.7版本
mybatis需要jar包:mybatis-3.2.7.jar、lib文件下的依赖jar
mysql驱动jar包:mysql-connector-java-5.1.7.-bin.jar
2、创建数据库
数据库名:mybatis
数据表:user
3、配置mybaits核心配置文件SqlMapConfig.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>
- <!-- 和spring整合后 environments配置将废除-->
- <environments default="development">
- <environment id="development">
- <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
- <transactionManager type="JDBC" />
- <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
- <!-- POOLED 表示支持JDBC数据源连接池 -->
- <!-- UNPOOLED 表示不支持数据源连接池 -->
- <!-- JNDI 表示支持外部数据源连接池 -->
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
- <property name="username" value="root" />
- <property name="password" value="mysqladmin" />
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="User.xml"/>
- </mappers>
- </configuration>
- SqlMapConfig.xml放入项目中config源文件下
4、创建对应数据表的java实体类
User.java
- package cn.itheima.pojo;
- import java.util.Date;
- public class User {
- private int id;
- private String username;// 用户姓名
- private String sex;// 性别
- private Date birthday;// 生日
- private String address;// 地址
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public String toString() {
- return "User [id=" + id + ", username=" + username + ", sex=" + sex
- + ", birthday=" + birthday + ", address=" + address + "]";
- }
- }
5、创建对应的映射文件
User.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">
- <!-- namespace:命名空间,做sql隔离 -->
- <mapper namespace="test">
- <!--
- id:sql语句唯一标识
- parameterType:指定传入参数类型(pojo类中对应的类型,不是数据库中的类型)
- resultType:返回结果集类型
- #{}:占位符,如果传入的类型是基本类型(string,long,double,int,boolean,float等),那么#{}中变量名称可以任意
- -->
- <select id="findUserById" parameterType="java.lang.Integer" resultType="cn.itheima.pojo.User">
- SELECT * FROM user WHERE id=#{id}
- </select>
- <!--
- 如果返回的结果为集合,resultType中也是配置为集合中泛型的类型,即resultType="cn.itheima.pojo.User"
- ${}:拼接符,如果传入的类型是基本类型(string,long,double,int,boolean,float等),那么${}中变量名称必须是value
- -->
- <select id="findUserByUserName" parameterType="java.lang.String" resultType="cn.itheima.pojo.User">
- SELECT * FROM user WHERE username LIKE '%${value}%'
- </select>
- <!--
- 如果传入的是pojo类型,则#{}中变量名称必须是pojo中对应的属性.属性.属性......
- 如果要返回数据库自增主键,可以使用SELECT LAST_INSERT_ID()
- -->
- <insert id="insertUser" parameterType="cn.itheima.pojo.User">
- <!-- 执行SELECT LAST_INSERT_ID()数据库函数,返回自增的主键
- keyProperty:将返回的主键放入传入的参数的Id中保存(保存到user对象中的id属性)
- order:当前函数相对于insert语句的执行顺序,在insert前执行用BEFORE,在insert后执行用AFTER
- resultType:id的类型,也就是keyProperty中属性类型
- -->
- <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
- SELECT LAST_INSERT_ID()
- </selectKey>
- INSERT INTO user (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})
- </insert>
- <delete id="deleteUserById" parameterType="java.lang.Integer">
- DELETE FROM user WHERE id=#{id}
- </delete>
- <update id="updateUserById" parameterType="cn.itheima.pojo.User">
- UPDATE user SET username=#{username} WHERE id=#{id}
- </update>
- </mapper>
二、测试
- package mybatis0523;
- import java.io.InputStream;
- 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.Test;
- import cn.itheima.pojo.User;
- public class UserTest {
- @Test
- public void testFindUserById() throws Exception {
- String resource = "SqlMapConfig.xml";
- // 通过流将核心配置文件读取进来
- InputStream inputStream = Resources.getResourceAsStream(resource);
- // 通过核心配置文件创建会话工厂
- SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
- // 通过会话工厂创建会话
- SqlSession session = factory.openSession();
- User user = session.selectOne("test.findUserById", 1);
- System.out.println(user);
- }
- @Test
- public void testFindUserByUserName() throws Exception {
- String resource = "SqlMapConfig.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
- SqlSession session = factory.openSession();
- List<User> list = session.selectList("test.findUserByUserName", "王");
- System.out.println(list);
- }
- @Test
- public void testInsertUser() throws Exception {
- String resource = "SqlMapConfig.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
- SqlSession session = factory.openSession();
- User user = new User();
- user.setUsername("赵四");
- user.setBirthday(new Date());
- user.setSex("1");
- user.setAddress("北京昌平");
- System.out.println(user.getId());
- session.insert("test.insertUser", user);
- // mybatis中事务默认是开启的,所以在mybatis中不需要显式开启事务,只需要显式提交事务
- // 提交事务
- session.commit();
- System.out.println(user.getId());
- }
- @Test
- public void testDeleteUserById() throws Exception {
- String resource = "SqlMapConfig.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
- SqlSession session = factory.openSession();
- session.delete("test.deleteUserById", 27);
- session.commit();
- }
- @Test
- public void testUpdateUserById() throws Exception {
- String resource = "SqlMapConfig.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
- SqlSession session = factory.openSession();
- User user = new User();
- user.setUsername("赵四");
- user.setId(24);
- session.update("test.updateUserById", user);
- session.commit();
- }
- }
简单的mybatis环境搭建和测试已完成,整个目录结构如下
Mybatis环境搭建及测试的更多相关文章
- MyBatis之MyBatis环境搭建
MyBatis之MyBatis环境搭建 一.MyBatis开发环境搭建 1.引入Jar包 ①MyBatis mybatis-3.4.1.jar ant-1.9.6.jar ant-launcher-1 ...
- MyBatis 环境搭建(四)
MyBatis 引言 在回顾JDBC时,我们已经创建有 Java 工程,而且也已经导入 mysql 依赖包,这里就直接在原有工程上搭建MyBatis环境,以及使用MyBatis来实现之前用 JDBC ...
- Tensorflow object detection API ——环境搭建与测试
1.开发环境搭建 ①.安装Anaconda 建议选择 Anaconda3-5.0.1 版本,已经集成大多数库,并将其作为默认python版本(3.6.3),配置好环境变量(Anaconda安装则已经配 ...
- springmvc+mybatis环境搭建
1.spring+mybatis 环境搭建: A.配置jdbc和dbcp数据源:注意版本com.mysql.cj.jdbc.Driver B.配置sessionfactory,绑定dbcp及配置map ...
- MyBatis -01- 初识 MyBatis + MyBatis 环境搭建
MyBatis -01- 初识 MyBatis + MyBatis 环境搭建 MyBatis 本是 apache 的一个开源项目 iBatis(iBATIS = "internet" ...
- 【运维技术】kafka三实例集群环境搭建及测试使用
kafka三实例集群环境搭建及测试使用 单机搭建分为两部分:1. 软件安装启动 2. 软件配置 软件安装启动: # 切换到目录 cd /app # 获取kafka最新安装包,这边使用的是镜像地址,可以 ...
- Mybatis环境搭建中的案例分析 及 如果自己编写DAO接口的实现类
Mybatis环境搭建中的案例分析public static void main (String[] args) throws Exception { //读配置文件 //第一个: 使用类加载器,只能 ...
- Tensorflow object detection API(1)---环境搭建与测试
参考: https://blog.csdn.net/dy_guox/article/details/79081499 https://blog.csdn.net/u010103202/article/ ...
- C++调用Lua编程环境搭建及测试代码示例
C++调用Lua编程环境搭建及测试代码示例 摘要:测试环境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7 1.安装lua开发环境LuaForWindows_v5.1. ...
随机推荐
- git不显示提交代码
今天提交代码找不到提交的具体代码,找了好半天,最后发现是右边能下拉能拉下去,尴尬.
- 32、最长有效括号 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(32)最长有效括号 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "滑动窗 ...
- Notepad++—设置背景颜色
之前,编程一直用的都是黑色背景色,最近发现,黑色背景色+高光字体,时间久了对眼睛特别不好.感觉自己编程到现在几年时间,眼睛就很不舒服,甚至有青光眼的趋势.所以,改用白底黑字,即"日间模式&q ...
- day02 Rsyuc备份服务器
day02 Rsyuc备份服务器 一.备份 1.什么是备份 备份就是把重要的数据或者文件复制一份保存到另一个地方,实现不同主机之间的数据同步 一般数据比较重要的情况下,数据如果丢失很容易找不回来了的, ...
- Python计算期权隐含波动率
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. Black-Scholes 将期权价格描述为标的价格.行权价.无风险利率.到期时间和波动性的函数. V ...
- Netty之ByteBuf
本文内容主要参考<<Netty In Action>>,偏笔记向. 网络编程中,字节缓冲区是一个比较基本的组件.Java NIO提供了ByteBuffer,但是使用过的都知道B ...
- 文件读写以及NMEA码中GPS信息的提取
首先先了解下什么是NMEA码,这里有很好的解释,就不直接搬运了 http://www.gpsbaby.com/wz/nmea.html 首先要找到包含GPS信息的文本行,即字符串GPGGA所在行 $G ...
- 【Android】No Android SDK found(mac)+ 真机调试
[1]No Android SDK found 如果没下载SDK,可以去google官方下载 如果因为上网问题,这里提供两个网址,有人整理好了,这里先谢谢他们,下面两个择其一下载 http://to ...
- Docker学习(四)——Docker容器连接
Docker容器连接 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射. 下面我们来实现通过端口连接到一个docker容器. 1.网络端口映射 ...
- final&static
final 1.final修饰类,那么该类不能有子类,那么也就没有子类重写父类的方法,也就没有多态 2.final修饰成员变量,那么成员变量要么显式赋值(用第一种),要么在构造方法中赋值 无论哪一种, ...