mybatis连接数据库

MyBatis背景介绍

       MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
       每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
       用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpath resource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。

jdbc连接驱动的jar包:连接什么的数据库自行下载
mybatis所需的jar包:mybatis-3.5.2.jar

本文介绍用注解、配置文件这两种方式操纵数据库

添加jar包
选中项目右击→build path→ configura build path→ libraries→add external jars 将选中的jar包添加 →Apple and close

项目结构
在这里插入图片描述
mybatis-config.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>
		<!-- 运行环境配置 -->
	<!--default属性:指定使用哪一个运行环境  -->
	<environments default="development">
				<!--id属性:唯一标识一个运行环境  -->
		<environment id="development">
						<!-- 事务管理器配置,type="JDBC":mybatis框架默认使用jdbc事务 -->
			<transactionManager type="JDBC" />
						<!--数据源配置,type="POOLED":mybatis框架提供的连接池  -->
			<dataSource type="POOLED">
				<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /><!--不同的数据库,连接字符串是不一样的-->		                                                       
				<property name="url" value="jdbc:sqlserver://localhost:1433;DatabaseName=EMIS" /> <!--databaseName为数据库名-->
				<property name="username" value="root" />  <!-- 用户名-->
				<property name="password" value="123" />  <!-- 密码 -->
			</dataSource>
		</environment>
	</environments>
			
	<mappers>
		  <mapper class="annotation.Users"/> <!-- 加载注解类 -->
		  <mapper resource="xml/s.xml"/>  <!-- 加载xml文件 -->
	</mappers>
</configuration>

S.Java 实体类

package entity;
public class S {
    
    
	  private String id;  //属性名要与数据库中的字段名一致
	  private String name;	    	  
	    public String getId() 
	    {
    
    
			return id;
		}
		public void setId(String id) {
    
    
			this.id = id;
		}
		public String getName() {
    
    
			return name;
		}
		public void setName(String name) {
    
    
			this.name = name;
		}			
		public String toString()
		{
    
    
			return id.trim() + name.trim();			
		}
}

Users类

package annotation;

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 entity.S;

public interface Users {
    
    
	@Select("select * from s") //注解
	public  List<S> select();
	
	@Insert("insert into s values(#{id},#{name})")
	public int insert(S s);
	
	@Delete("delete from s where name= #{name}")  //占位符#{}相当于jdbc中的?
	public int delete(S s);
	
	@Update("update s set name = #{name} where id = #{id}")
	public int update(S s);

}

s.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 namespace="s"> <!-- 映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。
当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句 -->
                         <!--返回的结果集-->
    <select id="select"  resultType="entity.S">
        SELECT * from s
    </select>
          
    <insert id="insert" >
        insert into s values(#{
    
    id},#{
    
    name})      
    </insert>
       
    <update id="update" >
           update s set name=#{
    
    name} where id=#{
    
    id}
    </update>
    
    <delete id="delete">
          delete from s where id=#{
    
    id}
    </delete>
</mapper>

testannotation.Java

import java.io.InputStream;
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 annotation.Users;
import entity.S;

public class TestAnnotation {
    
    

	public static void main(String[] args) throws Exception{
    
    
		//创建流来加载配置文件
		InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
		// mybatis的工厂类,读取配置文件内容
		SqlSessionFactory sqlFactory = new SqlSessionFactoryBuilder().build(in);		
		SqlSession ss = sqlFactory.openSession();  //创建一个sqlSession对象
		//反射 
		Users user = ss.getMapper(Users.class);
//		List<S> list = user.select();
//		System.out.println(list);
		S s = new S();
		s.setId("1111");
		s.setName("1111");
		int i = user.delete(s); 
		ss.commit();//提交事务,insert,update,delete 时必须有这条语句,否则无法更新数据
		ss.close();
		System.out.println(i+"行受影响");
	}
}

testxml.Java

扫描二维码关注公众号,回复: 11794309 查看本文章
// An highlighted block
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import entity.S;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class TestXML {
    
    

	public static void main(String[] args) throws IOException {
    
    
		InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
		// mybatis的工厂类,读取配置文件内容
		SqlSessionFactory sqlFactory = new SqlSessionFactoryBuilder().build(in);
		
		SqlSession ss = sqlFactory.openSession();  //创建一个sqlSession对象
//		List<S> list = ss.selectList("s.select");
//      System.out.println(list);
		S s = new S();
		s.setId("45");
		                //namespace.id调用
		int i = ss.delete("s.delete", s);
		ss.commit(); //提交事务,insert,update,delete 时必须有这条语句,否则无法更新数据
		ss.close();
		System.out.println(i+"行受影响");	
	}
}


由于本人也是初学者,难免有不足之处,还望斧正!

猜你喜欢

转载自blog.csdn.net/m0_46267375/article/details/105353180