配置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来操作数据库了。