本文发布于1372 天前,最后更新于707天前,其中的信息可能已经有所发展或是发生改变。
CURD
命名空间namespace
namespace的包名要和Dao/mapper接口的包名一致!
查询语句Select
选择,查询语句
- id:就是对应发namespace中的方法名
- resultType:Sql语句执行的返回值
- parameterType:参数类型
<select id="getUserById" resultType="top.huii.pojo.User" parameterType="int">
select * from javaweb.user where id = #{id}
</select>
结果:User{id=1, name='张三', pwd='11111111'}
新增Insert
<insert id="addUser" parameterType="top.huii.pojo.User">
insert into javaweb.user (id, name, pwd) values (#{id}, #{name}, #{pwd});
</insert>
修改Update
<update id="updateUser" parameterType="top.huii.pojo.User">
update javaweb.user set name=#{name}, pwd=#{pwd} where id = #{id};
</update>
删除Delete
<delete id="deleteUser" parameterType="int">
delete from javaweb.user where id=#{id};
</delete>
代码展示
- 工具类
MybatisUtils
package top.huii.utils;
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;
//sqlSessionFactory
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
// 获取sqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
- 定义接口
UserDao.java
package top.huii.dao;
import top.huii.pojo.User;
import java.util.List;
public interface UserDao {
// 获取全部用户
List<User> getUserList();
// 根据id查询用户
User getUserById(int id);
// 插入一个用户
int addUser(User user);
// 修改用户
int updateUser(User User);
// 删除用户
int deleteUser(int id);
}
- sql语句
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="top.huii.dao.UserDao">
<select id="getUserList" resultType="top.huii.pojo.User">
select * from javaweb.user;
</select>
<select id="getUserById" resultType="top.huii.pojo.User" parameterType="int">
select * from javaweb.user where id = #{id};
</select>
<insert id="addUser" parameterType="top.huii.pojo.User">
insert into javaweb.user (id, name, pwd) values (#{id}, #{name}, #{pwd});
</insert>
<update id="updateUser" parameterType="top.huii.pojo.User">
update javaweb.user set name=#{name}, pwd=#{pwd} where id = #{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from javaweb.user where id=#{id};
</delete>
</mapper>
- 测试
UserDaoTest.java
package top.huii.dao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import top.huii.pojo.User;
import top.huii.utils.MybatisUtils;
import java.util.List;
public class UserDaoTest {
@Test
public void Test() {
// 获得sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 方式1:getMapper 推荐
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserList();
// 方式2 不推荐
// List<User> userList = sqlSession.selectList("top.huii.dao.UserDao.getUserList");
for (User user :
userList) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int i = mapper.addUser(new User(4, "你好试试", "11122333"));
if (i > 0){
System.out.println("成功");
}
// 提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.updateUser(new User(4, "1111", "12000"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.deleteUser(1);
sqlSession.commit();
sqlSession.close();
}
}
万能Map
实体类中表太多,可以用map
配置解析
核心配置文件
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)