此项目不是maven项目,也是创建Dynamic Web Project
两种开发方式:Dao开发方式,Mapping代理开发方式
使用原始dao开发的缺点就是只能通过selectOne或者selectList等操作,而不是直接调用映射配置文件中的方法,不能一目了然。
本文为Mapping代理开发方式。
mybatis,有两个配置文件
全局配置文件SqlMapConfig.xml(配置数据源,全局变量,加载映射文件等东西)
映射文件xxxMapper.xml,用来对输入参数输出参数,数据库语句做配置的。
mybatis配置好之后的使用步骤
1、获取sqlMapConfig.xml的位置然后进行加载
2、通过sqlMapConfig.xml中的内容创建出sqlsessionFactory对象
3、然后通过sqlsessionFactory对象创建出sqlsession对象
4、有了sqlsession对象就可以进行相应的操作了。
工程目录:
步骤:
前置:创建数据库,数据表,添加数据。
1.添加jar (WebContent/WEB-INF/lib目录下添加)
2.pojo [User.java](添加到数据里各个数据的get/set方法)
3.设置mybatis配置文件 [conf.xml] (直接放置在src下,不需要放包下)
4.配置数据表的映射文件 [UserMapping.xml]
5.Dao接口类 [IUserOperaton.java]
6.实现方法 [Test.java]
具体:
前置:
create database mybatis;
create table user(
id int primary key auto_increment,
name varchar(20),
age int);
1.添加jar
只需添加两个jar: mybatis-3.4.5.jar 和 mysql-connector-java-5.5.10.bin.jar
一个是mybatis核心包,另一个是mysql驱动包
2.pojo
public class User {
private int id;
private String name;
private int age;
..省略get/set语句..
}
3.设置mybatis配置文件conf.xml(配置数据源,全局变量,加载映射等。)
4.定义数据表的映射文件(一般命名为:表名+Mapping)
名字与配置文件conf.xml里
update user set name = #{name},age = #{age} where id = #{id}
insert into user(name,age) values(#{name},#{age})
delete from user where id = #{id}
5.Dao接口类
package com.mybatis.test;
import java.util.List;
//所有的接口名与UserMapping的id名对应
public interface IUserOperaton {
public List SelectAll();
public User SelectById(int id);
public List SelectByName(String name);
public void UpdateUser(User user);
public void InsertUser(User user);
public void DeleteUser(int id);
}
6.实现方法,测试
package com.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
//所有方法名为实现IUserOperaton接口
public class Test {
//private static InputStream inputStream;
private static Reader reader;
private static SqlSessionFactory sqlSessionFactory;//会话工厂
static {
try {
//配置文件conf.xml
String resource= "conf.xml";
//inputStream = Resources.getResourceAsStream(resource);
reader = Resources.getResourceAsReader(resource);
//创建会话工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getUserAll() {
// 通过工厂得到SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
//创建代理对象
IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
List users = iUserOperaton.SelectAll();
for(User user : users) {
System.out.println("id is = " + user.getId() + "name is = " + user.getName() + ",age is = " + user.getAge());
}
}finally {
session.close();
}
}
public void getUserById(int id) {
// 通过工厂得到SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
//创建代理对象
IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
User user = iUserOperaton.SelectById(id);
System.out.println("name is = " + user.getName() + ",age is = " + user.getAge());
}finally {
session.close();
}
}
public void getUserByName(String name) {
// 通过工厂得到SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
//创建代理对象
IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
List users = iUserOperaton.SelectByName(name);
for(User user : users) {
System.out.println("name is = " + user.getName() + ",age is = " + user.getAge());
}
}finally {
session.close();
}
}
public void updateUser() {
// 通过工厂得到SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
//创建代理对象
IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
User user = iUserOperaton.SelectById(3);
if(user != null) {
user.setName("three");
iUserOperaton.UpdateUser(user);
session.commit();
}
}finally {
session.close();
}
}
public void deleteUser(int id) {
// 通过工厂得到SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
//创建代理对象
IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
iUserOperaton.DeleteUser(id);
session.commit();
}finally {
session.close();
}
}
public void insertUser() {
User user = new User();
user.setName("two");
user.setAge(33);
// 通过工厂得到SqlSession
SqlSession session = sqlSessionFactory.openSession();
try {
//创建代理对象
IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
iUserOperaton.InsertUser(user);
session.commit();
System.out.println("userid:" + user.getId());
}finally {
session.close();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test = new Test();
test.getUserAll();
test.getUserById(3);
test.getUserByName("two");
test.insertUser();
test.updateUser();
test.deleteUser(3);
}
}