mybatis简单运用(单表无关联查询)

首先运用mybatis需要先导入jar包

1.mybatis的jar包mybatis-3.4.1.jar

2.数据库的jar包mysql-connector-java-5.1.26-bin.jar

在连接数据库时需要先建立连接,mybatis采用配置文件进行设置。先书写mybatis的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>
	<!-- 导入外部配置文件 -->
	<properties resource="com/my/config/MyBatis.properties"/>
	<!-- 运行环境,default是默认使用的运行环境,可以书写多个environment -->
	<environments default="development">
		<environment id="development">
			<!-- 使用JDBC的事务,这里由mybatis控制 -->
			<transactionManager type="JDBC"/>
			<!-- 这里创建了一个数据库连接池,由mybatis管理 -->
			<dataSource type="POOLED">
				<!-- ${driver}是MyBatis.properties文件里面配置的 -->
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${username}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>
	<!-- 加载映射文件 -->
	<mappers>
		<mapper resource="com/my/config/UserMapper.xml"/>
	</mappers>
	
</configuration>

下面是properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/XXX?userecode=true&character=utf8
username=root
password=1234

下面来分析下连接的配置文件:

1.environments

MyBatis 可以配置多种环境。这会帮助你将 SQL 映射应用于多种数据库之中。但是要记得一个很重要的问题:你可以配置多种环境,但每个数据库对应一个 SqlSessionFactory。
所以,如果你想连接两个数据库,你需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,你就需要三个实例,以此类推。
在创建SqlSessionFactory的时候,如果是调用默认环境,直接通过SqlSessionFactoryBuilder对象构建出来,如果需要调用新的环境, 可以在Build方法加入一个参数,如:

//调用默认环境
SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(inputStream);
//根据参数调用环境
SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(inputStream,"development");

2.在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”):

一种是调用JDBC的事务;

JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设置。 它依赖于从数据源得 到的连接来管理事务范围。

一种是 web容器的事务

这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE 应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。例如:

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

3.dataSource

详细可以参见:https://blog.csdn.net/reliveit/article/details/47325189

4.Mapper配置的几种方法:
第一种(常用)
<mapper resource=" " />
resource指向的是相对于类路径下的目录
如:<mapper resource="sqlmap/User.xml" />
第二种
<mapper url=" " />
使用完全限定路径
如:<mapper url="file:///D:\workspace\mybatis1\config\sqlmap\User.xml" />
第三种
<mapper class=" " />
使用mapper接口类路径
如:<mapper class="cn.kang.mapper.UserMapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
第四种(推荐)
<package name=""/>
注册指定包下的所有mapper接口
如:<package name="cn.kang.mapper"/>
注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
 

<mappers>
	<mapper resource="com/my/dao/stuDao/StuMapper.xml"/>
	<package name="com.my.dao.stuDao"/>
</mappers>

实现简单的单表的增删改查

<?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="com.my.dao.IUserDao">
	<select id="getAllUser" resultType="com.my.bean.UserBean">
		select 
			pk_id as id,
			f_username as username,
			f_phone as phone
		from 
			t_user 
	</select>
	
	<select id="getUserById" resultType="com.my.bean.UserBean" parameterType="int">
		select 
			pk_id as id,
			f_username as username,
			f_phone as phone
		from 
			t_user 
		where 
			pk_id = #{id}
	</select>
	
	<update id="updateUserById" parameterType="int">
		update 
			t_user
		set 
			f_name = #{userName},
			f_phone = #{phone}
		where
			pk_id = #{id}
	</update>
	
	<insert id="addUser" parameterType="com.my.bean.UserBean">
		insert into 
			t_user
		values
			(null,#{userName},#{phone})
	</insert>
	
	<delete id="delUserById" parameterType="int">
		delete from 
			t_user
		where
			pk_id = #{id}
	</delete>

</mapper>

其中id是接口中的方法名,parameterType为方法的参数,resultType为方法返回值

下面是java代码

package com.my.dao;

import java.util.List;

import com.my.bean.UserBean;

public interface IUserDao {
	
	List<UserBean> getAllUser();
	
	UserBean getUserById(int id);
	
	int updateUserById(int id);
	
	int addUser(UserBean user);
	
	int delUserById(int id);

}

最后是测试代码

package com.my.test;

import java.io.IOException;
import java.io.InputStream;

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.Before;

import com.my.dao.IUserDao;

public class Test {
	
	private SqlSession  session1;

	@Before
	public void init() {
		InputStream inputStream = null;
		try {
			inputStream = Resources.getResourceAsStream("com/my/config/MyBatisConfig.xml");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(inputStream);
		session1 = sqlSession.openSession();
	}
	@org.junit.Test
	public void test() {
		IUserDao user = session1.getMapper(IUserDao.class);
		
		System.out.println(user.getAllUser().size());
		session1.close();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值