MyBatis是一款优秀的持久性框架,它支持它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
安装MyBatis,只需下载
然后解压缩,在项目中添加下面这个jar包
XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源和决定事务作用域和控制方式的事务管理器。
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--连接数据库-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/java/mybatis/mapper/UserMapper.xml"/>
</mappers>
</configuration>
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
例子(增删改查):
package com.java.mybatis.demo;
import com.java.mybatis.entity.User;
import com.java.mybatis.mapper.UserMapper;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisDemo {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession(true);
//查询
selectUser(1,session);
//增加
User user = new User(8, "EE", "45612378945");
saveUser(user,session);
//更新
User dd = new User(8, "ee", "1110");
updateUserById(dd, session);
User ee = new User(7, "gg", "110");
updateUser(ee, session);
// 删除
deleteUser(6,session);
}
public static void selectUser(int id, SqlSession session) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.selectUser(id);
}
public static void saveUser(User user, SqlSession session) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.saveUser(user);
}
public static void updateUser(User user, SqlSession session) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.updateUser(user);
}
public static void updateUserById(User user, SqlSession session) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.updateUser(user);
}
public static void deleteUser(int id,SqlSession session){
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.deleteUser(id);
}
}
package com.java.mybatis.mapper;
import com.java.mybatis.entity.User;
//面向接口编程
public interface UserMapper {
User selectUser(int id);
void saveUser(User user);
void updateUser(User user);
void deleteUser(int id );
}
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.java.mybatis.mapper.UserMapper">
<select id="selectUser" resultType="com.java.mybatis.entity.User">
select * from user where id = #{id}
</select>
<insert id="saveUser">
insert into user(id,name,tel_num) values(#{id},#{name},#{tel_num});
</insert>
<update id="updateUser" >
update user set tel_num=#{tel_num} where id =#{id}
</update>
<update id="updateUserById">
update user set tel_num="#{arg1}" where id=#{arg0}
</update>
<delete id="deleteUser">
delete from user where id=#{id}
</delete>
</mapper>
日志
log4j.properties
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.java.mybatis.mapper.UserMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
实体类
package com.java.mybatis.entity;
public class User {
private Integer id;
private String name;
private String tel_num;
public User() {
}
public User(Integer id, String name, String tel_num) {
this.id = id;
this.name = name;
this.tel_num = tel_num;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", tel_num='" + tel_num + '\'' +
'}';
}
public void setTel_num(String tel_num) {
this.tel_num = tel_num;
}
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}