MyBatis-全局配置文件

1.MyBatis是持久化层框架(SQL映射框架)-操作数据库

   实质就是将JDBC的一系列操作进行封装,并且将SQL语句部分转换成配置文件(更好的实现了Java文件和数据库操作解耦)

2.用MyBatis实现操作数据库步骤:

    1>导包:①mybatis-3.4.1.jar   ② mysql-connector-java-5.1.37-bin.jar    ③log4j.jar

    2>创建全局配置文件

<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置连接池 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/tx"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

    3>编写每一个方法如何向数据库发送sql语句,如何执行的配置文件。(本来应该是实现Dao接口的实现类,在此xml配置文件相当于实现Dao接口的接口类)

   指定该配置文件实现的是哪个接口,每个方法如何实现

<?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:写接口的全类名,告诉MyBatis该配置文件是实现哪个Dao接口的 -->
<mapper namespace="com.cuco.dao.BookDao">
 
 <!-- select标签:定义一个查询操作 id:相对于配置是对于某个方法的实现 resultType:指定方法运行后的返回值类型 -->
 <!-- #{是姓名}表示的是取方法中参数传递过来的值  -->
  <select id="getById" resultType="com.cuco.bean.Book">
    select * from book where isbn = #{isbn}
  </select>
</mapper>

    4>上面的针对每个Dao接口的实现类配置文件,MyBatis默认不知道,因此需要在全局配置文件中注册

<!-- 引入自己编写的每一个接口的实现文件 -->
  <mappers>
  <!-- resource:表示从类路径下找资源 -->
    <mapper resource="BookDao.xml"/>
  </mappers>

  Test测试:

public class MyBatisTest {

	@Test
	public void test() throws IOException {
		
		//根据全局配置文件创建出一个SqlSessionFactory
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		//获取和数据库的一次会话(相当于getConnection,获取连接)
		SqlSession openSession = sqlSessionFactory.openSession();
		//使用SqlSession操作数据库
		BookDao bookDao = openSession.getMapper(BookDao.class);
		Book book = bookDao.getById("ISBN-001");
		
		System.out.println(book);
		
	}

}

              ①根据全局配置文件创建一个SqlSessionFactory对象

              ②通过SqlSessionFactory获取sqlSession对象操作数据库

              ③使用sqlSession对象操作数据库

5>导入dtd约束文件

 

3.实现一次增删改查操作

<?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">
  <!-- 
  	public Book getById(String isbn);
	public int updateBook(Book book);
	public int deleteBook(Book book);
	public int insertBook(Book book);
	 -->
  <mapper namespace="com.cuco.dao.BookDao">
 
  <select id="getById" resultType="com.cuco.bean.Book">
  	select * from book where isbn=#{isbn}
  </select>
  
  <update id="updateBook">
  	update book set book_name=#{book_name},price=#{price}
  </update>
  
  <delete id="deleteBook">
  	delete from book where isbn=#{isbn}
  	</delete>
 
  <insert id="insertBook">
  	insert into book(isbn,book_name,price) values(#{isbn},#{book_name},#{price})
  </insert>
  
  </mapper>
public class MyBatisTest {
	
	SqlSessionFactory sqlSessionFactory ;
	
	@Before
	public void initSqlSessionFactory() throws IOException{
		//根据全局配置文件创建出一个SqlSessionFactory
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
		
	}
	
	
	//测试添加
	@Test
	public void testInsert() throws IOException {
		
				//获取和数据库的一次会话(相当于getConnection,获取连接)
				SqlSession openSession = sqlSessionFactory.openSession(true);	
		
				//使用SqlSession操作数据库,获取到Dao接口的实现(映射器)
				BookDao bookDao = openSession.getMapper(BookDao.class);
		
		try{
			bookDao.insertBook(new Book("ISBN-031","book31",30));
		}finally{
			openSession.close();
		}
	}
	
	
	//测试删除
	@Test
	public void testDel() throws IOException {
		
		//获取和数据库的一次会话(相当于getConnection,获取连接)
		SqlSession openSession = sqlSessionFactory.openSession();	

		//使用SqlSession操作数据库,获取到Dao接口的实现(映射器)
		BookDao bookDao = openSession.getMapper(BookDao.class);

try{
	Book book = new Book("ISBN-001","book01",100);
	bookDao.deleteBook(book);
}finally{
	openSession.commit();
	openSession.close();
}
}
	
	
	
	//测试查询
	@Test
	public void test() throws IOException {
		
		//获取和数据库的一次会话(相当于getConnection,获取连接)
				SqlSession openSession = sqlSessionFactory.openSession();	
		
				//使用SqlSession操作数据库,获取到Dao接口的实现(映射器)
				BookDao bookDao = openSession.getMapper(BookDao.class);
		
		try{
			Book book = bookDao.getById("ISBN-001");
			System.out.println(book);
		}finally{
			openSession.close();
		}
		
		
		
	}

}

两个文件:1>全局配置文件:mybatis-config.xml:指导mybatis正确运行的一些全局设置

                  2>SQL映射文件:BookDao.xml:相当于是实现BookDao接口的实现类

细节:1>获取到的是接口的代理对象;mybatis自动创建

           2>SqlSessionFactory只需要创建一次

 

4.引入外部配置文件

mybatis-config.xml中的标签:

1><properties></properties>:引入外部文件

<configuration>
<!-- 引用外部配置文件   
resource:从类路径下开始引用
url:引用磁盘路径或者网络路径的资源
 -->
  <properties resource="dbconfig.properties"></properties>
  
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置连接池 -->
      <dataSource type="POOLED">
      <!-- 用${}取出配置文件中的值 -->
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  
  
  <!-- 引入自己编写的每一个接口的实现文件 -->
  <mappers>
  <!-- resource:表示从类路径下找资源 -->
    <mapper resource="BookDao.xml"/>
  </mappers>
</configuration>

2><settings></settings>

3><typeAliases></typeAliases>:类型别名:为常用的类型起别名;(但是要注意标签顺序,否则会报错)

<configuration>
<!-- 引用外部配置文件   
resource:从类路径下开始引用
Url:引用磁盘路径或者网络路径的资源-->
  
  <properties resource="dbconfig.properties"></properties>
  
  <typeAliases>
  <!-- typeAlias:就是为一个javaBean起别名;别名默认就是类名(不缺分大小写),配置文件中就可以使用别名 -->
  <!-- <typeAlias type="com.cuco.bean.Book" alias="bo"/> -->
  <package name="com.cuco.bean"/>
  </typeAliases>
  
 
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置连接池 -->
      <dataSource type="POOLED">
      <!-- 用${}取出配置文件中的值 -->
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  
 
  <!-- 引入自己编写的每一个接口的实现文件 -->
  <mappers>
  <!-- resource:表示从类路径下找资源 -->
    <mapper resource="BookDao.xml"/>
  </mappers>
</configuration>
 <mapper namespace="com.cuco.dao.BookDao">
 
  <select id="getById" resultType="bo">
  	select * from book where isbn=#{isbn}
  </select>
  
  <update id="updateBook">
  	update book set book_name=#{book_name},price=#{price}
  </update>
  
  <delete id="deleteBook">
  	delete from book where isbn=#{isbn}
  	</delete>
 
  <insert id="insertBook">
  	insert into book(isbn,book_name,price) values(#{isbn},#{book_name},#{price})
  </insert>
  
  </mapper>

4> typeHandler:类型处理器

5>objectFactory

6>plugins插件

7>environments:配置环境:都需要一个事务管理器和一个数据源。但实际上配置数据源和事务管理器都是用Spring 的IOC容器配置

8>databaseIdProvider:用来考虑数据库移植性的

9>mappers:写好的SQL映射文件需要使用该标签进行注册

可以通过<mappers>

<package name="com.cuco.dao"/>

</mappers>实现批量注册(将实现接口的xml文件放在conf源文件下的dao包中)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值