mybatis简单理解就是替换JDBC的框架。
计算机识别的都是.class文件,所以第三方类库可以通过修改环境变量的方法让JVM通过环境变量找到它。
准备工作
数据库
建表,插入测试数据
以mySQL数据库为例子,创建数据库表
create table j233_student(
id int primary key auto_increment,
name varchar(50)
)
select * from j233_student;
insert into user (id, name )values(1,'李白');
insert into user (id, name )values(2,'王昭君');
insert into user (id, name )values(3,'貂蝉');
insert into user (id, name )values(4,'吕布');
select id,name from j233_student where id=1;
1 建立项目
控制台项目
web项目
2 jar http://www.cnblogs.com/xdp-gacl/p/4261895.html
来源
位置
mybatis类库 jar 官网下载
数据库驱动程序包 jar oracle安装目录
导入,加入到构建路径
3 编码,测试,整理操作步骤
编码阶段
1、添加Mybatis的配置文件conf.xml
本地化改造
存储连接数据库的信息
2、定义表所对应的实体类
3、定义操作users表的sql映射文件userMapper.xml
4、在conf.xml文件中注册userMapper.xml文件
在src下建立属性文件,mybatis配置文件
属性文件: db.properties 储存数据库连接信息
oracle的配置文件
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
name=scott
password=tiger
配置文件: config.xml
mySQL的配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/j233?useUnicode=true&characterEncoding=utf8
user=root
password=root
配置文件: 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>
<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://localhost:3306/j233" />
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.student.mapper.StudentMapper"/>
</mappers>
</configuration>
5、编写测试代码:执行定义的select语句
编写创建session对象的工具类
package com.student.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SessionUtil {
public static SqlSession getsSqlSession() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
return session;
}
}
6 定义实体类
package com.student.bean;
import java.util.List;
public class Student {
private Integer id;
private String name;
private List<Std_lsn> sl;
public Student(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Student(Integer id, String name, List<Std_lsn> sl) {
super();
this.id = id;
this.name = name;
this.sl = sl;
}
public Student() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Std_lsn> getSl() {
return sl;
}
public void setSl(List<Std_lsn> sl) {
this.sl = sl;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sl=" + sl + "]";
}
}
8 定义映射文件
定义接口文件
package com.student.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.student.bean.Student;
public interface StudentMapper{
@Select("select id,name from j233_student where id = #{id}")
public Student findStudentById(Integer id);
@Select("select * from j233_student")
public List<Student> findAll();
@Insert("insert into j233_student(id, name)values(#{id},#{name})")
public int add(Student student);
@Delete("delete from j233_student where id = #{id}")
public void deleteStudentById(Integer id);
@Update("update j233_student set name = #{name} where id =#{id}")
public int updateStudent(Student student);
}
9 在配置文件中注册映射文件
注意修改配置文件
<mappers>
<mapper class="com.student.mapper.StudentMapper"/>
</mappers>
10 编写数据库操作的代码
CURD
用注解方法写的,就在StudentMapper接口中,通过注解实现增删改查的操作。
11 测试
package test;
import org.apache.ibatis.session.SqlSession;
import com.student.bean.Student;
import com.student.mapper.StudentMapper;
import com.student.util.SessionUtil;
public class Test {
public static void main(String[] args) {
//1.创建sqlSession对象
SqlSession session = SessionUtil.getsSqlSession();
//2.创建接口实现类对象
StudentMapper sm = session.getMapper(StudentMapper.class);
//3.调用接口方法
//添加
// Student student = new Student(5,"刘备");
// sm.add(student);
// session.commit();
// session.close();
//查询
// Student student1 = sm.findStudentById(5);
// System.out.println(student1);
//删除
// sm.deleteStudentById(4);
// session.commit();
// session.close();
//修改
Student student = new Student(5,"孙尚香");
sm.updateStudent(student);
session.commit();
session.close();
}
}
第二种方式是通过xml配置文件的方式来实现CRUD操作
步骤大致相同。
1.创建java项目
2.导入jar包(
log4j-1.2.16.jar
mybatis-3.1.1.jar
ojdbc6.jar
)
3.buildPath
4.连接数据库,建表
**测试数据库连接可用,保证环境可靠
**
create table user(
id int primary key auto_increment,
userName varchar(50),
userAge int(11),
userAddress varchar(200)
)
insert into user (id, userName,userAge,userAddress )values(1,'李白',18,'北京');
insert into user (id, userName,userAge,userAddress )values(2,'玄策',18,'天津');
insert into user (id, userName,userAge,userAddress )values(3,'貂蝉',19,'北京');
insert into user (id, userName,userAge,userAddress )values(4,'赵云',20,'上海');
select * from user;
5.在src下建立属性文件,mybatis配置文件,log4j配置文件
6.建立创建SqlSession对象的工具类,并测试 对象是否成功创建
属性文件: db.properties 储存数据库连接信息
oracle:
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
name=scott
password=tiger
mySQL:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/j233?useUnicode=true&characterEncoding=utf8
user=root
password=root
<?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://localhost:3306/j233"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="user/bean/User.xml"/>
</mappers>
</configuration>
7.创建实体类
package user.bean;
public class User {
private int id;
private String userName;
private String userAge;
private String userAddress;
public User(int id, String userName, String userAge, String userAddress) {
super();
this.id = id;
this.userName = userName;
this.userAge = userAge;
this.userAddress = userAddress;
}
public User() {
super();
}
public User(String userName, String userAge, String userAddress) {
super();
this.userName = userName;
this.userAge = userAge;
this.userAddress = userAddress;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserAge() {
return userAge;
}
public void setUserAge(String userAge) {
this.userAge = userAge;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
}
8.实体类的xml映射文件
并且在这里通过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="user.mapper.UserMapper">
<select id="selectUserById" parameterType="int" resultType="user.bean.User">
select * from User where id = #{id}
</select>
<insert id="addUser" parameterType="user.bean.User">
insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress})
</insert>
<delete id="deleteUserById" parameterType="user.bean.User">
delete from user where id=#{id}
</delete>
<update id="updateUser" parameterType="user.bean.User">
update user set userName= #{userName},userAge=#{userAge},userAddress=#{userAddress} where id= #{id}
</update>
</mapper>
9.测试类
package test;
import java.io.Reader;
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 user.bean.User;
public class TryTest {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
public static void main(String[] args) {
try{
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
SqlSession session = sqlSessionFactory.openSession();
try {
// User user = session.selectOne("selectUserById", 1);
// System.out.println(user.getUserAddress());
// System.out.println(user.getUserName());
// User user=new User("女娲", "12", "北京");
// session.insert("addUser", user);
//int user = session.delete("deleteUserById",2);
//System.out.println(user);
User user = new User(4,"赵云","18","北京");
session.update("updateUser",user);
session.commit();
} finally {
session.close();
}
}
}
通过xml文件实现增删改查的操作
new一个User对象,通过对象调用方法,实现增删改查的操作。