首页 > 其他 > 详细

mybatis实例

时间:2021-03-28 21:38:35      阅读:28      评论:0      收藏:0      [点我收藏+]

记录一次 mybatis 的使用


  • 主要的maven依赖
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.8.2</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-Java</artifactId>
      <version>5.1.3</version>
    </dependency>

  • java 目录下创建包 mybatis, 并在 mybatis 下创建其它包 pojo,mapper,test
  1. pojo 包下创建用户类 User
public class User {
    private Integer id;
    private String name;

    //setter and getter
    
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name=‘" + name + ‘\‘‘ +
                ‘}‘;
    }
}
  1. mapper 包下创建 UserMapper.xml 文件, 内容如下
  • 注意:该配置文件在 java目录下,在idea maven项目的pom.xml中添加以下配置
<build> 
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
</build>

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="mybatis.dao.UserMapper">
    <resultMap id="resUser" type="user">
        <id property="id" column="id"/>
        <result property="name" column="uname"/>
    </resultMap>
    <select id="getUser" parameterType="java.lang.Integer" resultMap="resUser">
        select * from user where id = #{id}
    </select>
    <select id="getUsers" resultMap="resUser">
        select * from user
    </select>
    <insert id="insertUser" parameterType="user">
        insert into user values(null, #{name})
    </insert>
    <update id="updateUser" parameterType="user">
        update user set uname = #{name} where id = #{id}
    </update>
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{id}
    </delete>
</mapper>
  • resources 目录下创建文件 db.properties(数据库配置文件), log4j.properties(日志配置文件), mybatis-cfg.xml(mybatis配置文件)
  1. db.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8
db.user=root
db.password=root
  1. log4j.properties
#跟记录器,ERROR,输出到A1
log4j.rootLogger=ERROR, A1

#本记录器为DEBUG级别
log4j.category.com.log4j.test=DEBUG

#控制台输出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#DEBUG以上级别是输出
log4j.appender.A1.Threshold=DEBUG
#编码方式
log4j.appender.A1.Encoding=UTF-8
#是否立即输出
log4j.appender.A1.ImmediateFlush=true
#使用System.err输出
log4j.appender.A1.Target=System.err
#输出格式,表达式配置
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.ConversionPattern=%-d{yyyy-MM-d  HH:mm:ss, SSS}[%C]-[%p] %m%n
  1. mybatis-cfg.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>
    <!-- 使用外部配置文件 -->
    <properties resource="db.properties"></properties>
    <typeAliases>
        <!-- 给pojo对象起别名,在mapper文件中使用该别名作为返回对象的类型 -->
        <typeAlias type="mybatis.pojo.User" alias="user"/>
    </typeAliases>
    <!-- 进行数据操作的环境配置 -->
    <environments default="dev">
        <environment id="dev">
            <!-- 数据库管理使用JDBC类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- POOLED 表示使用数据库连接池,并且为mybatis默认连接池,与之对应的有UNPOOLED(无连接池) -->
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.user}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 加载sql映射文件 -->
        <mapper resource="mybatis/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  • 创建测试方法
public class UserTest {
    public static void main(String[] args) {
        SqlSession session = null;
        try {
            //读取mybatis配置文件
            InputStream stream = Resources.getResourceAsStream("mybatis-cfg.xml");
            //使用SqlSessionFactoryBuilder类构建SqlSessionFactory对象
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(stream);
            //打开sql会话
            session = sessionFactory.openSession();
            //获取一个用户信息
            System.out.println("获取一个用户信息");
            User user1 = session.selectOne("mybatis.dao.UserMapper.getUser", 1);
            System.out.println(user1);
            //获取全部用户信息
            System.out.println("获取全部用户信息");
            List<User> users = session.selectList("mybatis.dao.UserMapper.getUsers");
            for (User user : users) {
                System.out.println(user);
            }
            //模拟操作异常,事务中断
            int i = 1/0;
            //添加一个用户信息
            User user = new User();
            user.setName("lisi");
            System.out.println("添加一个用户信息");
            session.insert("mybatis.dao.UserMapper.insertUser", user);
            //更新一个用户信息
            System.out.println("更新一个用户信息");
            User user2 = new User();
            user2.setId(1);
            user2.setName("wangwu");
            session.update("mybatis.dao.UserMapper.updateUser", user2);
            //删除一个用户信息
            System.out.println("删除一个用户信息");
            session.delete("mybatis.dao.UserMapper.deleteUser", 2);
            //提交事务
            session.commit();
        } catch (IOException e) {
            e.printStackTrace();
            //回滚事务
            session.rollback();
        }finally{
            //关闭会话
            session.close();
        }
    }
}
  • 结果测试
  1. 未执行数据之前数据库信息

id uname
1 zhangsan
2 zhangsan
3 zhangsan
4 zhangsan
5 zhangsan

  1. 执行正确操作后的结果及数据库信息
    技术分享图片

id uname
1 wangwu
3 zhangsan
4 zhangsan
5 zhangsan
6 lisi

  1. 开启模拟事务提交出错,通过以下结果可以看出事务管理生效
    技术分享图片

技术分享图片

mybatis实例

原文:https://www.cnblogs.com/qpone/p/14589341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!