Mybatis实现对数据库的增删改查、Mybatis配置文件详解
程序员文章站
2022-05-06 20:57:34
...
一、编写接口
package org.westos.dao;
import org.westos.pojo.User;
import javax.jws.soap.SOAPBinding;
import java.util.List;
public interface UserMapper {
//添加一个用户
int addUser(User user);
//根据id查找用户
User selectUser(int id);
//根据id删除一个用户
int deleteUser(int id);
//修改用户信息
int update(User user);
}
二、编写接口对应的mapper文件
<?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对应Mapper接口的类-->
<mapper namespace="org.westos.dao.UserMapper">
<!--select标签的id对应映射接口的方法名字 resultType:返回结果的类型 中间就编写sql语句-->
<!--添加一个用户-->
<insert id="addUser" parameterType="org.westos.pojo.User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<!--根据id查找用户-->
<select id="selectUser" resultType="org.westos.pojo.User">
select * from user where id=#{id}
</select>
<!--删除一个用户-->
<delete id="deleteUser">
delete from user where id = #{id}
</delete>
<!--更新用户信息-->
<update id="update" parameterType="org.westos.pojo.User">
update user set name = #{name},pwd = #{pwd} where id=#{id}
</update>
</mapper>
三、测试类
package org.westos.dao;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.westos.pojo.User;
import org.westos.utils.MybatisUtils;
import java.sql.ParameterMetaData;
import java.util.Date;
public class UserMapperTest {
@Test
public void testAddUser(){
User user = new User(5, "元芳", "11111");
//1.拿到sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = MybatisUtils.getSqlSessionFactory();
//2.通过sqlSessionFactory对象openSession()创建一个sqlSession。
SqlSession sqlSession = sqlSessionFactory.openSession();
//3.通过sqlSession获得mapper对象 , 参数为映射文件对应的接口类的class对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(user);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testSelectUserById(){
SqlSessionFactory sqlSessionFactory = MybatisUtils.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUser(2);
System.out.println(user.toString());
}
@Test
public void testDeleteUser(){
SqlSessionFactory sqlSessionFactory = MybatisUtils.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(4);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testUpdateUser(){
User user = new User(1, "小学生", "123456");
SqlSessionFactory sqlSessionFactory = MybatisUtils.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.update(user);
sqlSession.commit();
sqlSession.close();
}
}
四、注意
- 增,改,删需要提交事务!
- 如果出现乱码,先在sql中进行测试,若sql没问题,就检查配置文件
- 在编写接口的映射时,若参数(parameterType)或返回值(resultType)是基本数据类型则可以省略,引用数据类型必须指定包名+类名
五、配置文件详解
<?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 配置
properties 配置文件
settings mybatis设置
typeAliases 为Java类起别名
typeHandlers 类处理器
objectFactory 对象工厂
plugins 插件
environments 环境
transactionManager 事务管理
dataSource : 数据源
mappers 映射器
六、配置文件详解——properties
在resources目录下创建database.properties
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8'
username = root
password = 123456
在mybatis核心配置文件中引入properties配置文件,并用${}表达式引入其中的值
<configuration>
<!--配置文件修改-->
<properties resource="database.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/westos/dao/userMapper.xml"/>
</mappers>
</configuration>
七、配置文件详解——优化别名(typeAliases)
在配置文件中为pojo中的实体类设置别名
typeAliases的alias属性为别名,type属性为包名+类名
<!--配置别名-->
<typeAliases>
<typeAlias type="org.westos.pojo.User" alias="User"/>
<package name="org.westos.pojo"/>
</typeAliases>
也可指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
<package name="org.westos.pojo"/>
配置完毕可以在接口的映射中使用别名
<!--添加一个用户-->
<insert id="addUser" parameterType="User">
insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
八、配置文件详解——环境配置(environment)
MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中 使用相同的 SQL 映射。有许多类似的使用场景。
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
九、配置文件详解——映射器
-
resource 【推荐】
<!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
-
url
<!-- 使用完全限定资源定位符(URL) --> <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/> <mapper url="file:///var/mappers/PostMapper.xml"/> </mappers>
-
class
<!-- 使用映射器接口实现类的完全限定类名 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/> </mappers>
-
package
<!-- 将包内的映射器接口实现全部注册为映射器 --> <mappers> <package name="org.mybatis.builder"/> </mappers>
下一篇: python爬虫框架Scrapy使用
推荐阅读
-
使用 Mybatis 实现数据库的增删改查、Map和模糊查询
-
MyBatis对MySQL数据库的增删改查操作代码详解
-
JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
-
Mybatis(一),使用三种方式实现对数据库表的增删改查
-
Mybatis实现对数据库的增删改查、Mybatis配置文件详解
-
MyBatis基础环境搭建配置、实现对数据库的增删改查
-
使用 Mybatis 实现数据库的增删改查、Map和模糊查询
-
MyBatis对MySQL数据库的增删改查操作代码详解
-
Mybatis(一)—实现对数据库的增删改查操作
-
SpringBoot学习:SpringBoot整合Mybatis实现数据库连接以及基本的增删改查操作并测试