Mybatis用法详解(配置和注解的使用)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xin917480852/article/details/52733422

mybatis是持久层框架

使用方法(基于xml配置)

1.添加依赖(Maven)
<!--数据库相关, mysql, mybatis-->
    <!--jdbc连接-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>
    <!--spring-mybatis  -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>${mybatis-spring-version}</version>
    </dependency>
    <!--mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis-version}</version>
    </dependency>
     <!--反射生成实体类-->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.2</version>
    </dependency>

2.建立数据库、表
CREATE DATABASE testdatabase;
USE testdatabase;
CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT, userName VARCHAR(20) NOT NULL, userAge INT NOT NULL);
INSERT INTO user(userName, userAge) VALUES('Xiaoxin', 21);
INSERT INTO user(userName, userAge) VALUES('Xiaoming', 22);
3.表的实体类
package com.xiaoxin.demo.dto;

public class User {
	private int id;
    private String userName;
    private int userAge;
	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 int getUserAge() {
		return userAge;
	}
	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", userName=" + userName + ", userAge=" + userAge + "]";
	}
}

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>
    <typeAliases> 
        <typeAlias alias="User" type="com.xiaoxin.demo.dto.User"/> 
    </typeAliases> 
	<!-- 数据库环境配置-->
    <environments default="development">
        <environment id="development">
        <!-- jdbc管理-->
        <transactionManager type="JDBC"/>
         <!-- 用什么连接池-->
            <dataSource type="POOLED">
             <!-- jdbc驱动-->
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <!-- 数据库名字url-->
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/testdatabase" />
            <!-- 数据库用户-->
            <property name="username" value="root"/>
            <!-- 数据库用户密码-->
            <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <!-- 把User.xml注册到mybatis的配置文件中,User.xml下面配置 -->
    <mappers>
        <mapper resource="com/xiaoxin/demo/dto/User.xml"/>
    </mappers>
</configuration>

5.定义操作user表的映射文件,第四步已经注册到mybatis的配置文件中去了
<?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">
<!-- 定义操作user表的sql映射文件userMapper.xml  -->
<mapper namespace="com.xiaoxin.demo.dto">
    <select id="selectUserByID" parameterType="int" resultType="User">
        select * from `User` where id = #{id}
    </select>
</mapper>

6.测试
package com.xiaoxin.demo.dto;

import java.io.Reader;

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;

public class TestUser {
	@Test
	public void testUser() throws Exception{
		 SqlSessionFactory sqlSessionFactory;
	     Reader reader; 
	     String resource = "spring/configuration.xml";
	     //加载一个流
	     reader= Resources.getResourceAsReader(resource);
	     //生成sqlSessionFactory工厂
	     sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
	     SqlSession session = sqlSessionFactory.openSession();
	     User user =(User) session.selectOne("com.xiaoxin.demo.dto.selectUserByID", 1);
	     System.out.print(user.toString());
	    session.close();
		
	}
	

}

连接数据库成功查询到数据


CRUD操作汇总
<?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">
<!-- 定义操作users表的sql映射文件userMapper.xml  -->
<mapper namespace="com.xiaoxin.demo.dto">
    <!--查询  -->
     <select id="selectUserAll" parameterType="int" resultType="User">
        select * from user
    </select>
    <!--插入  -->
    <insert id="insertUser" parameterType="com.xiaoxin.demo.dto.User">
    		insert into user(userName,userAge) values(#{userName},#{userAge});
    </insert>
	<!--更新  -->
    <update id="updateUser" parameterType="com.xiaoxin.demo.dto.User">
    		update user set userAge=#{userAge},userName=#{userName} where id=#{id}
    </update>
    <!--删除  -->
    <delete id="deleteUser" parameterType="int">
    	delete from user where id=#{id}
    </delete>
    
</mapper>
测试
package com.xiaoxin.demo.dto;

import java.io.Reader;
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;

public class TestUser {
	@Test
	public void testUser() throws Exception{
		 SqlSessionFactory sqlSessionFactory;
	     Reader reader; 
	     String resource = "spring/configuration.xml";
	     //加载一个流
	     reader= Resources.getResourceAsReader(resource);
	     //生成sqlSessionFactory工厂
	     sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
	     SqlSession session = sqlSessionFactory.openSession();
	     //插入
//	     User user1 = new User();
//	     user1.setUserName("Xiaohong");
//	     user1.setUserAge(20);
//	     session.insert("com.xiaoxin.demo.dto.insertUser", user1);
//	     // session.commit();一定要执行不然在数据库中没有信息!!!!!
//	     session.commit();
	    //更新
	     //把Xiaohong的姓名改为Xiaohong101年龄改为44 Xiaohong的id是13
//	     User user3 = new User();
//	     user3.setUserName("Xiaohong101");
//	     user3.setUserAge(44);
//	     user3.setId(16);
//	     session.update("com.xiaoxin.demo.dto.updateUser",user3);
//	     session.commit();
	     
	    //删除
	     session.delete("com.xiaoxin.demo.dto.deleteUser",16);
	     session.commit();
	     //查询数据库全部的信息
	     List<User> user2 = session.selectList("com.xiaoxin.demo.dto.selectUserAll");
	     for(User user:user2){
	    	 System.out.println(user.toString());
	     }
	    session.close();
		
	}
	

}
以上自己测试过全部成功,但是xml的配置过程中自己出错了很多,调试了很多次才成功调试出来,下面学习基于注解的写法

Mybatis的注解用法


1.定义SQL映射的接口
package com.xiaoxin.demo.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.xiaoxin.demo.dto.User;

public interface UserMapper {
	@Select("select * from user")
	public List<User> getSelectUser();
	@Update("UPDATE user set userName=#{userName},userAge=#{userAge} where id=#{id}")
	public void getUpdateUser(User user);
	@Insert("insert into user(userName,userAge) values(#{userName},#{userAge});")
	public void getInsertUser(User user);
	@Delete("DELETE FROM user where id=#{id}")
	public void getDeleteUser(int id);
	

}
2.在mybatis的配置文件中注册这个映射接口(注意是class!!)
 <mappers>
        <mapper resource="com/xiaoxin/demo/dto/User.xml"/>
        <mapper class="com.xiaoxin.demo.mapper.UserMapper"></mapper>
    </mappers>

在Dao类中调用(这里是测试)
package com.xiaoxin.demo.dto;

import java.io.IOException;
import java.io.Reader;
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 com.xiaoxin.demo.mapper.UserMapper;

public class TestUserAnnotation {
	
	@Test
	public void testUser() throws IOException{
		
		 SqlSessionFactory sqlSessionFactory;
	     Reader reader; 
	     String resource = "spring/configuration.xml";
	     //加载一个流
	     reader= Resources.getResourceAsReader(resource);
	     //生成sqlSessionFactory工厂
	     sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
	     SqlSession session = sqlSessionFactory.openSession();
	     
	     UserMapper userMapper = session.getMapper(UserMapper.class);
	     //插入
//	     User user = new User();
//	     user.setUserName("xinxin");
//	     user.setUserAge(20);
//	     userMapper.getInsertUser(user);
//	     session.commit();
	     //删除
//	     userMapper.getDeleteUser(21);
//	     session.commit();
	     //更新将id为19的姓名不变 年龄改为23
//	     User user = new User();
//	     user.setId(19);
//	     user.setUserName("xinxin");
//	     user.setUserAge(23);
//	     userMapper.getUpdateUser(user);
//	     session.commit();
	     //查询
	     List<User> users = userMapper.getSelectUser();
	     for(User user2 :users){
	    	 System.out.println(user2.toString());
	     }
	     session.close();
	}

}

测试成功







猜你喜欢

转载自blog.csdn.net/xin917480852/article/details/52733422
今日推荐