Mybatis基础入门学习

mybatis架构分析

搭建测试mybatis架构

(1)下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.jar(数据库驱动),junit-4.9.jar(单元测试)

(2)测试mybatis项目搭建

(3)Jdbc资源文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=admins

(4)Mybatis核心配置文件

<?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>
<!-- 数据库资源文件 -->
<properties resource="jdbc.properties"/> <!-- 别名:方便映射文件调用 -->
<typeAliases>
<!-- 这个有弊端:有多少pojo就要配置多少个 -->
<!--<typeAlias type="com.pojo.User" alias="user"/>-->
<!-- 所以用包的方式:扫描该包及其子包的所有pojo,并取别名为(如:user或User) -->
<package name="com.pojo"/>
</typeAliases> <!-- 数据库环境,与Spring整合后,environments标签将废除-->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<!--<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="admins"/>--> <property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments> <!-- 映射器的位置 -->
<mappers>
<!--<mapper resource="com/mapper/UserMapper.xml"/>-->
<!-- 3个属性只能取一个,当为class时,xml文件和接口文件必须文件名一样且在同一个包下 -->
<!--<mapper class="com.mapper.UserMapper"/>-->
<!-- url:该属性指定mapper在盘符下的绝对路径,不建议使用 --> <!-- 上面的弊端还是会太多配置,导包的原则和class一样 -->
<package name="com.mapper"/>
</mappers>
</configuration>

(5)日志文件

#日志文件
log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

(6)创建一个User类

package com.pojo;

import java.io.Serializable;
import java.util.Date; /**
* Serializable:序列化接口
*/
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址 public Integer getId() {
return id;
}
public void setId(Integer 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 + "]";
}
}

(7)User类的映射器

<?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">
<!-- 命名空间:用于区分;如test.findUserById -->
<mapper namespace="com.mapper.UserMapper">
<!-- 通过ID查询一个用户 -->
<select id="findUserById" parameterType="Integer" resultType="User">
<!-- #{}:表示占位符 -->
select * from user where id=#{v}
</select> <!-- 根据用户名模糊查询用户 -->
<select id="findUserByName" parameterType="String" resultType="com.pojo.User">
<!-- ${}:表示字符串拼接 -->
-- select * from user where username like '%${value}%'
<!-- 防sql注入 -->
select * from user where username like "%"#{value}"%"
</select> <!-- 添加用户 -->
<insert id="addUser" parameterType="com.pojo.User">
<!-- 获取最新的ID主键 -->
<selectKey keyProperty="id" resultType="Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user (username,birthday,address,sex)
values (#{username},#{birthday},#{address},#{sex})
</insert> <!-- 更新用户 -->
<update id="updateUserById" parameterType="com.pojo.User">
update user
set username=#{username},birthday=#{birthday},address=#{address},sex=#{sex}
where id=#{id}
</update> <!-- 删除用户 -->
<delete id="delUserById" parameterType="Integer">
delete from user where id=#{id}
</delete>
</mapper>

(8)与映射器绑定的接口

package com.mapper;

import com.pojo.User;

/**
* @author: XDZY
* @date: 2018/8/30 10:02
* @description: 实现用户增删改查的接口(映射器)
* 遵循四个原则
* 1)接口方法名与xml文件标签id一样
* 2)方法返回值类型与xml文件一样
* 3)方法的参数与xml文件一样
* 4)xml文件命名空间与该接口绑定
*/
public interface UserMapper {
public User findUserById(Integer id);
}

(9)测试mybatis实现增删改查

package com.junit;

import com.pojo.User;
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 java.io.InputStream;
import java.util.Date;
import java.util.List; /**
* @author: XDZY
* @date: 2018/8/29 23:18
* @description: 单元测试mybatis的增删改查
*/
public class UnitTest {
//根据用户ID查询用户
@Test
public void testMybatis() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
User user=sqlSession.selectOne("com.mapper.UserMapper.findUserById",10);
System.out.println(user);
} //根据用户名模糊查询用户
@Test
public void testFindUserByName() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
List<User> users=sqlSession.selectList("com.mapper.UserMapper.findUserByName","五");
for (User user:users){
System.out.println(user);
}
} //添加用户
@Test
public void testAddUser() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
User user=new User();
user.setUsername("judy");
user.setSex("男");
user.setBirthday(new Date());
user.setAddress("珠海");
int i=sqlSession.insert("com.mapper.UserMapper.addUser",user);
//提交事务
sqlSession.commit();
System.out.println(user.getId());
} //更新用户
@Test
public void testUpdateUserById() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
User user=new User();
user.setId(28);
user.setUsername("judy");
user.setSex("女");
user.setBirthday(new Date());
user.setAddress("珠海");
int i=sqlSession.update("com.mapper.UserMapper.updateUserById",user);
//提交事务
sqlSession.commit();
} //删除用户
@Test
public void testDelUserById() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
sqlSession.delete("com.mapper.UserMapper.delUserById",28);
//提交事务
sqlSession.commit();
}
}

Mybatis基础入门学习的更多相关文章

  1. MyBatis基础入门《十二》删除数据 - @Param参数

    MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...

  2. MyBatis基础入门《五》核心配置文件

    MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-c ...

  3. MyBatis基础入门《二》Select查询

    MyBatis基础入门<二>Select查询 使用MySQL数据库,创建表: SET NAMES utf8mb4; ; -- ---------------------------- -- ...

  4. 函数:我的地盘听我的 - 零基础入门学习Python019

    函数:我的地盘听我的 让编程改变世界 Change the world by program 函数与过程 在小甲鱼另一个实践性超强的编程视频教学<零基础入门学习Delphi>中,我们谈到了 ...

  5. MyBatis基础入门《二十》动态SQL(foreach)

    MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...

  6. MyBatis基础入门《十九》动态SQL(set,trim)

    MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...

  7. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  8. MyBatis基础入门《十七》动态SQL

    MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > ...

  9. MyBatis基础入门《十六》缓存

    MyBatis基础入门<十六>缓存 >> 一级缓存 >> 二级缓存 >> MyBatis的全局cache配置 >> 在Mapper XML文 ...

随机推荐

  1. WebGL 踩坑系列-1

    WebGL 中的一些选项WebGL 中开启颜色混合(透明效果) gl.enable(gl.BLEND); gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALP ...

  2. javascript 数组方法拼接html标签

    var htmls = new Array(); htmls.push("<tr class='otherinfotr'>");htmls.push("< ...

  3. Maven,SVN,快捷键,数据库等

    1.Eclipse中Maven的搭建: 1.1 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven 下载地址: http://maven. ...

  4. iOS实现头像选取(照相或者图片库)、大小等比缩放、生成圆形头像

    //弹出actionsheet.选择获取头像的方式 //从相册获取图片 -(void)takePictureClick:(UIButton *)sender { // /*注:使用,需要实现以下协议: ...

  5. canvas制作倒计时效果

  6. 移动web基础

    接触retina屏 基础知识(移动Web的基础知识)排版布局(高效的移动Web布局)开发效率终端交互优化 pixel像素基础viewport视图viewport_meta标签viewport_codi ...

  7. Git学习笔记day01 从GitHub克隆版本库

    本期Git教程将会带您进入Git的世界,这是您使用分布版本控制工具Git的开端,祝您学习顺利! 步骤一  在Linux系统中下载Git 如果是Ubuntu系统,在shell中输入指令 sudo apt ...

  8. javaWeb上移下移(SpringMVC+Mabits+MySql)

    文章已移至:https://blog.csdn.net/baidu_35468322/article/details/79643356 移动之前: 移动之后: 1.控制层 /** * 修改排序 * * ...

  9. memcached 的配置及 spymemcached 客户端简单使用

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.同时也可以用作不同系统之间的数据共享.应用比较广泛.下面介绍一下环境的memcached环境的搭建及简单实 ...

  10. JavaScript 编写随机四位数验证码(大小写字母和数字)

    1.JavaScript编写随机四位数验证码,用到的知识点为: a.Math对象的随机数:Math.random() b.Math对象的取整    :Math.floor() c.处理所需要的下标个数 ...