Mybatis入门程序

别等时光非礼了梦想. 提交于 2020-01-01 12:35:02

1、创建数据库

  创建如下的的一个数据库表

2、需求

实现以下功能:

  1. 根据用户id查询一个用户信息
  2. 根据用户名称模糊查询用户信息列表
  3. 添加用户
  4. 更新用户
  5. 删除用户

    3、创建java工程

    4、 导入需要的jar包

    5、在classpath下面创建log4j.properties文件

      Mybatis使用log4j作为日志输出,因此要创建log4j.properties配置文件。
    文件内容如下:

     log4j.rootLogger=DEBUG, stdout
     log4j.appender.stdout=org.apache.log4j.ConsoleAppender
     log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
     log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    6、在classpath下创建SqlMapConfig.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>
    
     <!--
     环境配置
     在和Spring整合后改配置将废除
     -->
     <environments default="development">
    
         <environment id="development">
     <!--使用JDBC的事务管理,事务管理交给Mybatis-->
     <transactionManager type="JDBC"></transactionManager>
     <!--数据库连接池,有Mybatis管理-->
          <dataSource type="POOLED">
              <property name="driver" value="com.mysql.jdbc.Driver" />
              <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
              <property name="username" value="root" />
              <property name="password" value="root" />
         </dataSource>
         </environment>
     </environments>
     </configuration>

    7、创建PO类

     public class User {
         private int id;
         private String username;
         private Date birthday;
         private String sex;
         private String address;
    
         public int getId() {
             return id;
         }
    
         public void setId(int id) {
             this.id = id;
         }
    
         public String getUsername() {
             return username;
         }
    
         public void setUsername(String username) {
             this.username = username;
         }
    
         public Date getBirthday() {
             return birthday;
         }
    
         public void setBirthday(Date birthday) {
             this.birthday = birthday;
         }
    
         public String getSex() {
             return sex;
         }
    
         public void setSex(String sex) {
             this.sex = sex;
         }
    
         public String getAddress() {
             return address;
         }
    
         public void setAddress(String address) {
             this.address = address;
         }
    
         @Override
         public String toString() {
             return "User{" +
                     "id=" + id +
                     ", username='" + username + '\'' +
                     ", birthday=" + birthday +
                     ", sex='" + sex + '\'' +
                     ", address='" + address + '\'' +
                     '}';
         }
     }

8、创建映射文件,user.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:命名空间,对SQL进行分类化的管理,进行sql隔离
-->
<mapper namespace="test">
    <!--
        查询sql语句配置使用select标签
        id:该语句的唯一标识,通常称为statement的id
        parameterType:输入参数的类型
        resultType:返回数据的类型,指定为Java的po类型,则将查询出来的单条记录映射为po对象。
    -->
    <select id="findUserById" parameterType="int" resultType="com.jack.po.User" >
        <!--
            要执行的sql语句
            #{} :表示一个占位符
            #{value} :value表示接受的参数,名称为value,如果参数是简单类型,则名称可以随意起。
        -->
          SELECT * FROM user WHERE  id=#{value}
    </select>

    <select id="findUserByName" parameterType="String" resultType="com.jack.po.User">
        SELECT * FROM user WHERE username LIKE '%${value}%'
    </select>

    <insert id="insertUserInfo" parameterType="com.jack.po.User">
        <!--
            获取插入记录的id,只适用于mysql数据库的自增主键
            keyProperty:主键名称
            order:获取主键的时间。在insert语句执行之前还是之后
            resultType:返回的数据类型
         -->
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        <!--输入参数为一个po时,#{}中间要写该po类的属性名称-->
        INSERT INTO user(username,birthday,sex,address) VALUE (#{username},#{birthday},#{sex},#{address})
    </insert>

    <update id="updateUserInfo" parameterType="com.jack.po.User" >
        UPDATE user set birthday=#{birthday},sex=#{sex},address=#{address} WHERE  id=#{id}
    </update>

<update id="deleteUserInfo" parameterType="int" >
    DELETE FROM user WHERE  id=#{value}
</update>
</mapper>

9、在SqlMapConfig.xml中引入上面的配置文件

 <!--引入mapper-->
    <mappers>
        <!--rerource:引入映射文件相对于classpath的地址-->
        <mapper resource="config/sqlmap/user.xml" />
    </mappers>

10、创建测试类

public class UserTest {

    private SqlSessionFactory sessionFactory;
    @Before
    public void setUp() throws  Exception{
        //SqlMapConfig.xml相对于classpath的地址
        String resource = "config/SqlMapConfig.xml";
        //使用inputString读入该配置文件
        InputStream in = Resources.getResourceAsStream(resource);
        //创建SqlSessionFactory对象
        sessionFactory = new SqlSessionFactoryBuilder().build(in);
        }


    @Test
public void findUserById(){
        //创建SqlSession对象
        SqlSession sqlSession = sessionFactory.openSession();
    try {
        /**
         * 执行SqlSession对象的方法
         * 第一个参数为:映射文件中的namespace+.+statement id
         * 第二个参数为:要传入的参数值
         */
        User user =  sqlSession.selectOne("test.findUserById",1);
        System.out.println(user);
    } catch (Exception e) {
        e.printStackTrace();
    }finally {

    }
}

    @Test
    public void findUserByName(){
        SqlSession sqlSession = sessionFactory.openSession();
        try {
           List<User> list  =  sqlSession.selectList("test.findUserByName","小明");
            for (User user:list) {
                System.out.println(user);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {

        }
    }

    @Test
    public void insertUserInfo(){
        SqlSession sqlSession = sessionFactory.openSession();
        try {
            User user = new User();
            user.setId(26);
            user.setBirthday(new Date());
            user.setSex("1");
            user.setAddress("甘肃天水");
            sqlSession.update("test.insertUserInfo",user);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {

        }
    }

    public void updateUserInfo(){
        SqlSession sqlSession = sessionFactory.openSession();
        try {
            User user = new User();
            user.setUsername("东方不败");
            user.setBirthday(new Date());
            user.setSex("0");
            user.setAddress("黑木崖");
            int id =sqlSession.insert("test.updateUserInfo",user);
            System.out.println(id);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {

        }
    }

    @Test
    public void deleteUserInfo(){
        SqlSession sqlSession = sessionFactory.openSession();
        try {

            sqlSession.delete("test.deleteUserInfo",28);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {

        }
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!