MyBatis的添加用户

**

一、MyBatis环境搭建

**

1.Mybatis介绍

(1)Mybatis是什么?
MyBatis 本是apache的一个开源项目iBatis,是一个基于Java的持久层框架,用来写dao
(2)Mybatis有什么特点?
》1 最简单安装只要两个jar文件+配置几个sql映射文件,自带连接池
》2 sql写在xml里,便于统一管理和优化
》3 sql和代码的分离,提高了可维护性
》4 提供映射标签,支持对象与数据库的orm字段关系映射
》5 提供对象关系映射标签,支持对象关系组建维护
》6 提供xml标签,支持编写动态sql

2.MyBatis下载使用

mybaits的代码由github.com管理
下载地址:https://github.com/mybatis/mybatis-3/releases

下载解压后会得到这样的目录结构:
在这里插入图片描述

mybatis-3.4.5.jar是MyBatis的核心包,mybatis-3.4.5.pdf是MyBatis的使用手册,lib文件夹下的JAR是MyBatis的依赖包。
  使用MyBatis框架时,需要将它的核心包和依赖包引入到应用程序中。

MyBatis的使用需要导入jar或者依赖

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>

创建日志类log4j
MyBatis默认使用log4j输出日志信息,如果开发者需要查看控制台输出的SQL语句,那么需要导入log4j的依赖

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

3.Mybatis架构

(1)mybaits 是对jdbc的封装
(2)重点在配置文件xml
在这里插入图片描述
(3)架构图
在这里插入图片描述

4.通过MyBatis的getMapper实现增删查改

https://github.com/strive-xgf/SSM/commit/cdded0e4200374f7b1094f137b6786b2b883adeb

(1)导入依赖包


junit
junit
4.11
test

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.32</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.5</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.6.2</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-jcl</artifactId>
  <version>2.6.2</version>
</dependency>

(2) 在resources目录下,创建log4j2.xml日志文件配置

<?xml version="1.0" encoding="UTF-8"?>
    <Root level="error">
        <AppenderRef ref="Console"/>
    </Root>
</Loggers>

(3)创建bean (User类)

//User用户类
public class User {
private int id; //主键id
private String username; //用户名
private Date birthday; //出生日期
private int sex; //性别
private String address; //家庭地址
//这里省略getter和setter方法,toString方法
}

(4)创建User类的映射文件
//创建User类的映射文件
public interface UserMapper {
//通过id查找user
public User getUserById(int id);

//通过模糊搜索,找到对应的用户名
//    select * from user where username like '张%'
List<User> findByUsername(String username);

//通过id删除user
public void deleteById(int id);

//添加user
public void saveUser(User user);

//更新user
public int updateUser(User user);

}

(5)核心配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- mappers 用来配置多个映射文件(写sql语句的文件),指定配置文件 -->
<mappers>
    <mapper resource="com.xgf.mybatisdemo.dao.UserMpper"/>
</mappers>

(6)创建UserMapper.xml写sql语句实现增删查改

<?xml version="1.0" encoding="UTF-8" ?> select * from user where id = #{id}
<!--    keyProperty  获取到的新插入的记录的主键赋值给返回对象的属性
        useGeneratedKeys="true",使用主键生成(主键自动增长)
        keyProperty="id" 将主键的值id赋值给对象user  (创建对象的时候不用赋值主键值)
-->
<insert id="saveUser" parameterType="com.xgf.mybatisdemo.bean.User" useGeneratedKeys="true" keyProperty="id">
    insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address});
</insert>

<!-- 输出多个用户对象 , mybatis  会自动判断  如果是多个User对象,自动封装成集合   -->
<select id="findByUsername" resultType="com.xgf.mybatisdemo.bean.User">
    select * from user where username like #{username};
</select>

<!-- 更新user数据 -->
<update id="updateUser" parameterType="com.xgf.mybatisdemo.bean.User">
    update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id = #{id};
</update>


<delete id="deleteById" parameterType="int">
      delete from user where id= #{id}
</delete>

(7)创建获取sqlSession的工具类(封装成util工具类)
//sqlSession工具类,获取sqlSession
public class SqlSessionUtils {

//SqlSessionFactory对象
private static SqlSessionFactory sqlSessionFactory;

//static 静态代码,在类加载的时候执行一次,且只执行一次
static{
    //1. 创建SqlSessionFactoryBuilder对象
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //2. 加载mybatis-config.xml配置文件   参数:核心配置文件
    InputStream inputStream = SqlSessionUtils.class.getClassLoader().getResourceAsStream("com/xgf/mybatisdemo/config/mybatis-config.xml");
    //3. 创建SqlSessionFactory对象  加载核心配置文件  参数:输入流
    sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

}

public static SqlSession getSession(){
    // 4. 创建SqlSession对象  对数据库进行操作
    SqlSession sqlSession = sqlSessionFactory.openSession();
    return sqlSession;
}

}

(8)创建测试类,测试对user的增删查改
public class TestSqlSessionUtils {

private SqlSession sqlSession = null;
private UserMapper userMapper = null;
//@Before 在每个方法执行前获取session
@Before
public void init(){
    //通过SqlSessionUtils工具类获取sqlSession
    sqlSession = SqlSessionUtils.getSession();
    userMapper = sqlSession.getMapper(UserMapper.class);
}

//测试查询
@Test
public void test01(){
    System.out.println("查找user");
    User user = userMapper.getUserById(2);
    System.out.println(user);
}

//(对数据库进行修改需要提交事务(insert、update、delete))
//测试增加
@Test
public void test02(){
    // mybatis动态代理会自动生成userMapper的实现类,查询sql,执行jdbc代码
    System.out.println("增加user");
    User user = new User(null,"添加username", Date.valueOf("2020-12-15"), 1, "湖南省张家界市");
    userMapper.saveUser(user);
    sqlSession.commit();
}

//测试删除
@Test
public void test03(){
    System.out.println("删除id=1的user");
    userMapper.deleteById(1);
    //sqlSession执行数据更新(增加、删除、修改)需要提交事务commit才会对数据库进行修改,查询不需要提交事务
    sqlSession.commit();
}

//测试通过模糊查询 username
@Test
public void test04(){
    System.out.println("查询用户名中含有name的所有user");
    List<User> userList = userMapper.findByUsername("%name%");
    for(User user:userList){
        System.out.println(user);
    }
}

//测试更新
@Test
public void test05(){
    System.out.println("更新id=7的数据");
    int i = userMapper.updateUser(new User(7, "我更新了7的user", Date.valueOf("2020-2-22"), 2, "我的address在湖南"));

    if(i>0){
        sqlSession.commit();
        System.out.println("更新了" + i + "条数据");

    }else{
        System.out.println(" id =7 的用户不存在,数据更新失败");
    }

}

//每个方法执行之后执行
@After
public void destory(){
    sqlSession.close();//关闭sqlSession
}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值