1.通用的部分
1.数据库
2.Admin
package cn.yf.entity;
public class Admin {
private int id;
private String name;
private String password;
public Admin() {
}
public Admin(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public Admin(String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Admin{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
3.如果你用IDEA,当映射的xml文件在src文件夹下时,需要在mybatis-config.xml的build节点下添加
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
这样xml文件才会有用
2.xml配置方式
1.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>
<!--设置别名!-->
<typeAliases>
<package name="cn.yf.entity"></package>
</typeAliases>
<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://127.0.0.1:3306/sms?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="admin" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/AdminMapper.xml"></mapper>
</mappers>
</configuration>
2.AdminMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//rnybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.yf.mapper.AdminMapper">
<select id="getAdmin" parameterType="int" resultType="Admin">
select * from Admin where id = #{id}
</select>
<insert id="addAdmin" parameterType="Admin">
insert into Admin(name,password) values(#{name},#{password})
</insert>
<delete id="deleteAdmin" parameterType="int">
delete from Admin where id = #{id}
</delete>
<update id="updateAdmin" parameterType="Admin">
update Admin set name=#{name},password=#{password} where id=#{id}
</update>
<select id="queryAllAdmin" resultType="Admin">
select * from Admin
</select>
</mapper>
3.测试
package cn.yf.junit;
import cn.yf.entity.Admin;
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 org.junit.Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class test {
@Test
public void test1() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
String message = "cn.yf.mapper.AdminMapper.getAdmin";
Admin Admin = sqlSession.selectOne(message,2);
System.out.println(Admin);
sqlSession.close();
}
@Test
public void test2() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
String message = "cn.yf.mapper.AdminMapper.addAdmin";
Admin Admin = new Admin("mao","123");
sqlSession.insert(message,Admin);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test3() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
String message = "cn.yf.mapper.AdminMapper.deleteAdmin";
sqlSession.delete(message,11);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test4() throws IOException{
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
String message = "cn.yf.mapper.AdminMapper.updateAdmin";
Admin Admin = new Admin(3,"baby","520");
sqlSession.update(message,Admin);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test5() throws IOException {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
String message = "cn.yf.mapper.AdminMapper.queryAllAdmin";
List<Admin> AdminList = sqlSession.selectList(message);
System.out.println(AdminList);
sqlSession.close();
}
}
3.动态代理的方式实现
1.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>
<typeAliases>
<package name="cn.yf.entity"></package>
</typeAliases>
<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://127.0.0.1:3306/sms?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/yf/mapper/AdminMapper.xml"/>
</mappers>
</configuration>
2.AdminMapper.xml(namespace的值为接口文件的代码文件名)
<?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="cn.yf.mapper.AdminMapper">
<select id="queryAdminById" resultType="Admin" parameterType="int">
select * from admin where id = #{id}
</select>
<insert id="addAdmin" parameterType="Admin">
insert into admin(name,password) values(#{name},#{password})
</insert>
<delete id="deleteAdmin" parameterType="int">
delete from admin where id = #{id}
</delete>
<update id="updateAdmin" parameterType="Admin">
update admin set name=#{name},password=#{password} where id=#{id}
</update>
<select id="queryAllAdmin" resultType="Admin">
select * from admin
</select>
</mapper>
3.AdminMapper接口(方法的名字,返回值,参数都要和映射文件相对应),这样我们就可以只需要接口就可以定位到映射的xml文件
package cn.yf.mapper;
import cn.yf.entity.Admin;
import java.util.List;
public interface AdminMapper {
/**
* 根据id查询admin
* @param id admin的id
* @return admin
*/
Admin queryAdminById(int id);
/**
* 查询所有admin
* @return admin的list
*/
List<Admin> queryAllAdmin();
/**
* 添加管理员
* @param admin 管理员实体类
*/
void addAdmin(Admin admin);
/**
* 根据id删除admin
* @param id 管理员id
*/
void deleteAdmin(int id);
/**
* 更新Admin信息
* @param admin
*/
void updateAdmin(Admin admin);
}
4.测试
package cn.yf.junit;
import cn.yf.entity.Admin;
import cn.yf.mapper.AdminMapper;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class test1 {
@Test
public void test1() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
AdminMapper adminMapper = session.getMapper(AdminMapper.class);
Admin admin = adminMapper.queryAdminById(1);
System.out.println(admin);
}
@Test
public void test2() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
AdminMapper adminMapper = session.getMapper(AdminMapper.class);
List<Admin> adminList = adminMapper.queryAllAdmin();
System.out.println(adminList);
}
@Test
public void test3() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
AdminMapper adminMapper = session.getMapper(AdminMapper.class);
Admin admin = new Admin(4,"nan","123");
adminMapper.addAdmin(admin);
session.commit();
session.close();
}
@Test
public void test4() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
AdminMapper adminMapper = session.getMapper(AdminMapper.class);
adminMapper.deleteAdmin(7);
adminMapper.deleteAdmin(8);
session.commit();
session.close();
}
@Test
public void test5() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
AdminMapper adminMapper = session.getMapper(AdminMapper.class);
Admin admin = new Admin(3,"sb","123");
adminMapper.updateAdmin(admin);
session.commit();
session.close();
}
}
4.基于注解的方式
1.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>
<typeAliases>
<package name="cn.yf.entity"></package>
</typeAliases>
<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://127.0.0.1:3306/sms?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="cn.yf.mapper.AdminMapper"></mapper>
</mappers>
</configuration>
2.AdminMapper接口
package cn.yf.mapper;
import cn.yf.entity.Admin;
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface AdminMapper {
/**
* 根据id查询admin
* @param id admin的id
* @return admin
*/
@Select("select * from admin where id=#{id}")
Admin queryAdminById(@Param(value="id")int id);
/**
* 查询所有admin
* @return admin的list
*/
@Select("select * from admin")
List<Admin> queryAllAdmin();
/**
* 添加管理员
* @param admin 管理员实体类
*/
@Insert("insert into admin(name, password) values(#{name}, #{password})")
void addAdmin(Admin admin);
/**
* 根据id删除admin
* @param id 管理员id
*/
@Delete("delete from admin where id = #{id}")
void deleteAdmin(@Param(value="id")int id);
/**
* 更新Admin信息
* @param admin
*/
@Update("update admin set name=#{name},password=#{password} where id =${id}")
void updateAdmin(Admin admin);
}
3.测试
package cn.yf.junit;
import cn.yf.entity.Admin;
import cn.yf.mapper.AdminMapper;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class test {
@Test
public void test1() throws IOException {
String str = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(str);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);
List<Admin> adminList = adminMapper.queryAllAdmin();
System.out.println(adminList);
}
@Test
public void test2() throws IOException{
String str = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(str);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);
Admin admin = adminMapper.queryAdminById(1);
System.out.println(admin);
}
@Test
public void test3() throws IOException {
String str = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(str);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);
Admin admin = new Admin("hahahaaa","123");
adminMapper.addAdmin(admin);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test4() throws IOException {
String str = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(str);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);
adminMapper.deleteAdmin(10);
sqlSession.commit();
sqlSession.close();
}
@Test
public void test5() throws IOException {
String str = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(str);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
AdminMapper adminMapper = sqlSession.getMapper(AdminMapper.class);
Admin admin = new Admin(3,"入职","11111");
adminMapper.updateAdmin(admin);
sqlSession.commit();
sqlSession.close();
}
}