Mybatis框架

配置Mybatis

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>
	<properties resource="dbconfig.properties"></properties>
	
	<!-- 环境 -->
	<environments default="developments">
		<environment id="mysql">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${driverClassName}" />
				<property name="url" value="${url}" />
				<property name="username" value="${userName}" />
				<property name="password" value="${passWord}" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		 <mapper resource="com/gy/crm/mapper/userMapper.xml" /> 
	</mappers>
</configuration>

使用mybatis的generator映射

generatorconfig.xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
	<!-- 配置驱动 -->
	<properties resource="dbconfig.properties"></properties>
	<classPathEntry
		location="C:\mysql-jar\mysql-connector-java-5.1.17.jar" />
	<context id="context1">
		<commentGenerator>
			<property name="suppressDate" value="true" />
			<!-- 是否去除自动生成的注释 true:是 : false:-->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<jdbcConnection driverClass="${driverClassName}"
			connectionURL="${url}" userId="${userName}" password="${passWord}" />
		<!-- 1、领域模型 -->
		<javaModelGenerator
			targetPackage="com.gy.crm.model" targetProject="wpzlxt" />
		<!-- 2、xml文件 -->
		<sqlMapGenerator targetPackage="com.gy.crm.mapper"
			targetProject="wpzlxt" />
		<!-- 3、接口 -->
		<javaClientGenerator
			targetPackage="com.gy.crm.dao" targetProject="wpzlxt"
			type="XMLMAPPER" />

		<table tableName="user" domainObjectName="User"
			enableCountByExample="false" enableUpdateByExample="false"
			enableDeleteByExample="false" enableSelectByExample="false"
			selectByExampleQueryId="false"></table>
	</context>
</generatorConfiguration>

OR映射会自动帮我们生成三个包路径,dao,mapper,model

现在看一看userMapper.xml文件中是怎么配置的

userMapper.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="com.gy.crm.dao.UserMapper">
	<resultMap id="BaseResultMap" type="com.gy.crm.model.User">
		<id column="user_id" jdbcType="INTEGER" property="userId" />
		<result column="login_name" jdbcType="VARCHAR"
			property="loginName" />
		<result column="user_password" jdbcType="VARCHAR"
			property="userPassword" />
		<result column="user_role" jdbcType="VARCHAR"
			property="userRole" />
		<result column="user_age" jdbcType="VARCHAR" property="userAge" />
		<result column="user_sex" jdbcType="VARCHAR" property="userSex" />
		<result column="user_address" jdbcType="VARCHAR"
			property="userAddress" />
		<result column="user_phone" jdbcType="VARCHAR"
			property="userPhone" />
		<result column="user_power" jdbcType="INTEGER"
			property="userPower" />
	</resultMap>
	<sql id="Base_Column_List">
		user_id, login_name, user_password, user_role, user_age, user_sex,
		user_address,
		user_phone, user_power
	</sql>
	<select id="selectByPrimaryKey"
		parameterType="java.lang.Integer" resultMap="BaseResultMap">
		select
		<include refid="Base_Column_List" />
		from user
		where user_id = #{userId,jdbcType=INTEGER}
	</select>
	<delete id="deleteByPrimaryKey"
		parameterType="java.lang.Integer">
		delete from user
		where user_id = #{userId,jdbcType=INTEGER}
	</delete>
	<insert id="insert" parameterType="com.gy.crm.model.User">
		insert into user (user_id, login_name, user_password,
		user_role, user_age, user_sex,
		user_address, user_phone, user_power
		)
		values (#{userId,jdbcType=INTEGER}, #{loginName,jdbcType=VARCHAR},
		#{userPassword,jdbcType=VARCHAR},
		#{userRole,jdbcType=VARCHAR}, #{userAge,jdbcType=VARCHAR}, #{userSex,jdbcType=VARCHAR},
		#{userAddress,jdbcType=VARCHAR}, #{userPhone,jdbcType=VARCHAR},
		#{userPower,jdbcType=INTEGER}
		)
	</insert>
	<insert id="insertSelective"
		parameterType="com.gy.crm.model.User">
		insert into user
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="userId != null">
				user_id,
			</if>
			<if test="loginName != null">
				login_name,
			</if>
			<if test="userPassword != null">
				user_password,
			</if>
			<if test="userRole != null">
				user_role,
			</if>
			<if test="userAge != null">
				user_age,
			</if>
			<if test="userSex != null">
				user_sex,
			</if>
			<if test="userAddress != null">
				user_address,
			</if>
			<if test="userPhone != null">
				user_phone,
			</if>
			<if test="userPower != null">
				user_power,
			</if>
		</trim>
		<trim prefix="values (" suffix=")" suffixOverrides=",">
			<if test="userId != null">
				#{userId,jdbcType=INTEGER},
			</if>
			<if test="loginName != null">
				#{loginName,jdbcType=VARCHAR},
			</if>
			<if test="userPassword != null">
				#{userPassword,jdbcType=VARCHAR},
			</if>
			<if test="userRole != null">
				#{userRole,jdbcType=VARCHAR},
			</if>
			<if test="userAge != null">
				#{userAge,jdbcType=VARCHAR},
			</if>
			<if test="userSex != null">
				#{userSex,jdbcType=VARCHAR},
			</if>
			<if test="userAddress != null">
				#{userAddress,jdbcType=VARCHAR},
			</if>
			<if test="userPhone != null">
				#{userPhone,jdbcType=VARCHAR},
			</if>
			<if test="userPower != null">
				#{userPower,jdbcType=INTEGER},
			</if>
		</trim>
	</insert>
	<update id="updateByPrimaryKeySelective"
		parameterType="com.gy.crm.model.User">
		update user
		<set>
			<if test="loginName != null">
				login_name = #{loginName,jdbcType=VARCHAR},
			</if>
			<if test="userPassword != null">
				user_password = #{userPassword,jdbcType=VARCHAR},
			</if>
			<if test="userRole != null">
				user_role = #{userRole,jdbcType=VARCHAR},
			</if>
			<if test="userAge != null">
				user_age = #{userAge,jdbcType=VARCHAR},
			</if>
			<if test="userSex != null">
				user_sex = #{userSex,jdbcType=VARCHAR},
			</if>
			<if test="userAddress != null">
				user_address = #{userAddress,jdbcType=VARCHAR},
			</if>
			<if test="userPhone != null">
				user_phone = #{userPhone,jdbcType=VARCHAR},
			</if>
			<if test="userPower != null">
				user_power = #{userPower,jdbcType=INTEGER},
			</if>
		</set>
		where user_id = #{userId,jdbcType=INTEGER}
	</update>
	<update id="updateByPrimaryKey"
		parameterType="com.gy.crm.model.User">
		update user
		set login_name = #{loginName,jdbcType=VARCHAR},
		user_password = #{userPassword,jdbcType=VARCHAR},
		user_role = #{userRole,jdbcType=VARCHAR},
		user_age = #{userAge,jdbcType=VARCHAR},
		user_sex = #{userSex,jdbcType=VARCHAR},
		user_address = #{userAddress,jdbcType=VARCHAR},
		user_phone = #{userPhone,jdbcType=VARCHAR},
		user_power = #{userPower,jdbcType=INTEGER}
		where user_id = #{userId,jdbcType=INTEGER}
	</update>
	<select id="queryLogin" parameterType="com.gy.crm.model.User"
		resultMap="BaseResultMap">
		select
		<include refid="Base_Column_List" />
		from user
		where login_name=#{loginName,jdbcType=VARCHAR} and
		user_password=#{userPassword,jdbcType=VARCHAR}
	</select>
	<update id="updateByLoginNameSelective"
		parameterType="com.gy.crm.model.User">
		update user
		<set>
			<if test="loginName != null">
				login_name = #{loginName,jdbcType=VARCHAR},
			</if>
			<if test="userPassword != null">
				user_password = #{userPassword,jdbcType=VARCHAR},
			</if>
			<if test="userRole != null">
				user_role = #{userRole,jdbcType=VARCHAR},
			</if>
			<if test="userAge != null">
				user_age = #{userAge,jdbcType=VARCHAR},
			</if>
			<if test="userSex != null">
				user_sex = #{userSex,jdbcType=VARCHAR},
			</if>
			<if test="userAddress != null">
				user_address = #{userAddress,jdbcType=VARCHAR},
			</if>
			<if test="userPhone != null">
				user_phone = #{userPhone,jdbcType=VARCHAR},
			</if>
			<if test="userPower != null">
				user_power = #{userPower,jdbcType=INTEGER},
			</if>
		</set>
		where login_name = #{loginName,jdbcType=VARCHAR}
	</update>
	<select id="queryAllUser"
		resultMap="BaseResultMap">
		select
		<include refid="Base_Column_List" />
		from user
		
	</select>
</mapper>

可以看到在文件中已经自动生成了简单的增删改查的sql语句。

在代码中如何调用mybatis框架来查询数据库

1.首先创建一个工具类DBFactory.java

public class DBFactory {
	public static SqlSessionFactory sqlSessionFactory = null;
	static {
		try {
			// 从xml中创建SqlSessionFactory
			String resourse = "mybatis-config.xml";
			Reader reader = Resources.getResourceAsReader(resourse);
			 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader, "mysql");
		} catch (IOException e) {
		}

	}
	
	public static SqlSession getSqlSession() {
		return sqlSessionFactory.openSession();
	}
}

这个工具类的作用是为了获得SqlSession对象。

2.在代码中如何调用

public void queryUser01() {
		SqlSession session = null;
		try {
			session = DBFactory.getSqlSession();
			UserMapper mapper = session.getMapper(UserMapper.class);
			int userId = 1;
			User user = mapper.queryUser(userId);
			session.commit();
			System.out.println(user);
		} catch (Exception e) {
			// TODO: handle exception
			session.rollback();
		}
	}

从这里可以看出,UserMapper的实现类是由SqlSession对象通过反射来获取的到的。
这样我们就可以使用mybatis来操作数据库了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值