<一> 全局基本配置
<?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 配置文件 -->
<properties resource="mysql.properties"></properties>
<!-- 设置标签 setting 为具体设置, name 为设置项 ( 取值参考官方文档 http://www.mybatis.org/mybatis-3/zh/configuration.html ), value 设置值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<!-- 别名处理器, 为 Java 类起别名, 个人不推荐使用 -->
<typeAliases>
<!-- 为某个具体的类起别名 -->
<!-- <typeAlias type="mybatis.model.User" alias="user" /> -->
<!-- 为某个包下的所有类起别名, 可以在类上 @Alias 区分具体的类 -->
<package name="mybatis.model" />
</typeAliases>
<!-- 环境配置, 可以配置多个环境, default 的值表示默认使用那个环境配置 -->
<environments default="development">
<!-- 配置具体的开发环境 需要一个 id 作为唯一标识, 该标签可以有多个 -->
<environment id="development">
<!-- 配置事物管理器 type 的取值三种: UNPOOLED|POOLED|JNDI => 不使用连接池|使用连接池|JNDI技术 -->
<transactionManager type="JDBC" />
<!-- -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 支持多数据库厂商 -->
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="m" />
<property name="Oracle" value="o" />
<property name="SQL Server" value="s" />
<property name="DB2" value="d" />
</databaseIdProvider>
<!-- 将 SQL 语句的配置文件导入 MYBATIS 的主配置文件, 有三个属性: resource 配置下的全类名, url 磁盘全路径, class 接口全路径 -->
<mappers>
<!-- 单文件注册 -->
<!-- <mapper resource="mybatis/sqlxml/UserDao.xml" /> -->
<!-- 批量注册 -->
<package name="mybatis.dao"/>
</mappers>
</configuration>
< 二 > 接口 UserDao.java
package mybatis.dao;
import mybatis.model.User;
public interface UserDao {
public int insertUser(User user);
public int deleteUser(int userId);
public int updateUser(User user);
public User selectUser(int userId);
}
< 三 > 接口的对应配置文件 UserDao.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="mybatis.dao.UserDao">
<!-- id 为接口定义的方法名 resultType 为实体类的全类名 #{userId} 中的参数和方法名一致 -->
<select id="selectUser" resultType="user" databaseId="m">
SELECT * FROM User WHERE UserId = #{userId}
</select>
<!-- 新增时获取自动生成的自增 ID 值, useGeneratedKeys: 是否获取, keyProperty: 赋值给 参数的哪个 属性 -->
<insert id="insertUser" parameterType="mybatis.model.User" useGeneratedKeys="true" keyProperty="userId" >
INSERT INTO User ( UserName, UserSex, UserIntroduce )
VALUES ( #{userName}, #{userSex}, #{userIntroduce} )
</insert>
<update id="updateUser" parameterType="mybatis.model.User">
UPDATE User SET UserName = #{userName}, UserSex = #{userSex}, UserIntroduce=#{userIntroduce}
WHERE UserId = #{userId}
</update>
<delete id="deleteUser">
DELETE FROM User Where UserId = #{userId}
</delete>
</mapper>
< 四 > 对应的测试类
package mybatis.service;
import org.apache.ibatis.session.SqlSession;
import mybatis.dao.SessionFactory;
import mybatis.dao.UserDao;
import mybatis.model.User;
public class UserService {
public static void main(String[] args) {
//insertUser();
deleteUser();
//updateUser();
//selectUser();
}
public static void selectUser(){
SqlSession session = SessionFactory.getSessionFactory().openSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = userDao.selectUser(1);
System.out.println(user);
session.close();
}
public static void insertUser() {
// 获取是 参数为 true 自动提交, 不填或 false 需要手动提交
SqlSession session = SessionFactory.getSessionFactory().openSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = new User();
user.setUserName("刘大");
user.setUserSex(0);
user.setUserIntroduce("好人一个!");
System.out.println(userDao.insertUser(user));
System.out.println(user);
session.commit();
session.close();
}
public static void updateUser() {
// 获取是 参数为 true 自动提交, 不填或 false 需要手动提交
SqlSession session = SessionFactory.getSessionFactory().openSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = new User();
user.setUserId(1);
user.setUserName("刘大");
user.setUserSex(0);
user.setUserIntroduce("屌丝一枚!");
System.out.println(userDao.updateUser(user));
session.commit();
session.close();
}
public static void deleteUser(){
SqlSession session = SessionFactory.getSessionFactory().openSession();
UserDao userDao = session.getMapper(UserDao.class);
System.out.println(userDao.deleteUser(1));
session.commit();
session.close();
}
}