单独使用 Mybatis 框架搭建以及使用

Mybatis项目搭建 流程

导入 Mybatis jar包
配置mybatis 配置文件 写好配置源
构建对应的sql语句文件 对应好 相对的接口
构建SqlSession 对象api执行

MyBatis 的框架构成

实体类 JavaBean 封装数据
sql定义文件 用来定义sql的文件
主配置文件 用来定义数据库信息 以及 加载sql 定义文件的xml
框架api 主要是mabatis.jar中的 SqlSession 对象来执行对应的操作

按照规则来定义Dao 接口 以及 sql文件来

接口方法名称对应sql配置文件中的ID

接口方法的返回值 对应sql文件中 resultType 返回单个值保持一致 多个对象需要加List Dml操作可 以是void 可以是 int

接口方法的参数 和 parameterType 保持一致 如果没有parameterType 则参数任意

SQL 定义文件中的namespace 和 包名.接口名 一致

构建mybatis配置文件

<?xml version="1.0" encoding="UTF-8" ?> 
 <!DOCTYPE configuration  PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"            "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
	<environments default="environment">
		<environment id="environment">
			<transactionManager type="JDBC" />
			//配置数据源
			<dataSource type="POOLED">
				<property name="driver" 
					value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/test"/>
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	//对应的sql文件路径
	<mappers>
		<mapper resource="com/liheng/dao/bank.xml" />
	</mappers>
</configuration> 


Dao接口以及 对应的sqlXml文件

Dao接口


public interface UserDao {
	//查询单个对象
	User findByid(int id);
	//查询所有对象
	List<User> findAll();
	//根据多个参数查询对象	通过@Param 来定义 sql文件中查询的名称 也可以是 0 1  可以可以是 para1 para2
	User findUserbypassAndname(@Param("name")String name ,@Param("password")String pass);
}
<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"      
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
 <!-- namespace指定和哪个Mapper映射器接口对应 -->
<mapper namespace="com.liheng.dao.UserDao">
	<!-- 定义SQL语句 -->	
   <select id="findByid" parameterType="int" resultType="com.liheng.bean.User">
         select * from bank where id= #{id}
    </select>

	<select id="findAll" resultType="com.liheng.bean.User">
    	select * from bank
    </select>

	<select id="findUserbypassAndname" resultMap="map">
  		select * from bank where name = #{name} and password=#{password}
  	</select>
    <resultMap type="com.liheng.bean.User" id="map">
    	<result column="password" property="pass"/>
    </resultMap>
</mapper> 

创建sqlsession对象来执行对应的操作

sql.getMapper(UserDao.class); 当前方法自动构建实现类对象无需再实现Dao对应的实现类


public class Util {

	
	public static SqlSession ret(){
		//创建SqlSessionFactoryBuilder 来创建  SqlSessionFactory 
		SqlSessionFactoryBuilder fb = new SqlSessionFactoryBuilder();
		//根据SqlSessionFactory 工程对象得到配置文件信息 得到 SqlSession 对象 就可以执行 对应的api
		InputStream is = Util.class.getClassLoader().getResourceAsStream("sqlmap-config.xml");
		SqlSessionFactory ses = fb.build(is);
		SqlSession sql =  ses.openSession();
		return sql;
	}

}

参数是多个参数的解决方法

使用Map对象来装入参数 sql查询语句中 参数名称对应 Map中的key

java类
	User findUserbypassAndname1(Map<String,String> map);


SQL查询文件
    <select id="findUserbypassAndname1" parameterType="map" resultType="com.liheng.bean.User">
  		select * from bank where name = #{name} and password=#{password}
  	</select>

通过传入对象 来获取值 sql查询语句中 参数名称对应 对象中的参数名称

Java类
	User findUserbypassAndname2(User user);


sql查询文件
	<select id="findUserbypassAndname1" parameterType="map" resultType="com.liheng.bean.User">
  		select * from bank where name = #{name} and password=#{password}
  	</select>

不需要写传入参数的类型 直接使用 @para(“参数名称”) 来定义 或者 在 sql文件中 使用 0或者1 或者 #{para1} # {para2}

实体类对象参数与数据库不匹配解决方法

无需定义 返回值 定义 resultMap

在resultMap 中写好对应返回的 类型 以及定义不一样的名称
column 对应的 数据库字段
property 对应实体类的名称

  <select id="findUserbypassAndname" resultMap="map">
  	select * from bank where name = #{name} and password=#{password}
  </select>
    <resultMap type="com.liheng.bean.User" id="map">
    	<result column="password" property="pass"/>
    </resultMap>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值