说一下MyBaties的快速入门
环境:IDEA 开发工具,MAVEN,JDK9。
先大概总体说一下,步骤:
- 添加MyBatis的座标
- 创建user数据表
- 编写User实体类
- 编写映射文件UserMapper.xml
- 编写核心文件SqlMapConfig.xml
- 编写测试类
第一步新建一个项目或者model
File>new>Model,然后选中Maven:
点击Next,输入一些内容点Next....到最后finish。生成的可能要差一点,最后自己补充一些就好。
第二步导入JAR
在项目的pom.xml文件中添加:
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
第三步 创建一个domain,或者叫Model 一个实体:User,这个要和你的数据库的表中的字段对应起来。
比如我数据库是这样的:
那么实体就应该是:
package com.lxl.domain; public class User { private int id; private String username; private String password; @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } 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 String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
第四步:编写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="userMapper"> <delete id="delete" parameterType="java.lang.Integer"> delete from user where id = #{#id} </delete> <update id="update" parameterType="com.lxl.domain.User"> update user set username= #{username},password=#{password} where id = #{id} </update> <insert id="add" parameterType="com.lxl.domain.User"> insert into user values (#{id},#{username},#{password}) </insert> <select id="findAll" resultType="user"> select * from user </select> </mapper>
第五步:编写SqlMapperConfig.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="jdbc.properties"></properties> <!--自定义别名 注意顺序--> <typeAliases> <typeAlias type="com.lxl.domain.User" alias="user"/> </typeAliases> <!--配置数据源环境--> <environments default="developement"> <environment id="developement"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/lxl/mapper/UserMapper.xml"/> </mappers> </configuration>
第六步:编写测试类MyBatisTest:
package com.lxl; import com.lxl.domain.User; 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 mybatiesTest { @Test public void Test4() throws IOException { //加载核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //获得sqlSession工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //获得sqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //执行sql语句 int insert = sqlSession.delete("userMapper.delete",4); //打印结果 System.out.println(insert); //提交事务 sqlSession.commit(); //释放资源 sqlSession.close(); } @Test public void Test3() throws IOException { //加载核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //获得sqlSession工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //获得sqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setId(4); user.setUsername("lixi"); user.setPassword("lisi"); //执行sql语句 int insert = sqlSession.update("userMapper.update",user); //打印结果 System.out.println(insert); //提交事务 sqlSession.commit(); //释放资源 sqlSession.close(); } @Test public void Test2() throws IOException { //加载核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //获得sqlSession工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //获得sqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); // user.setId(3); user.setUsername("lixi"); user.setPassword("123456"); //执行sql语句 int insert = sqlSession.insert("userMapper.add",user); //打印结果 System.out.println(insert); //提交事务 sqlSession.commit(); //释放资源 sqlSession.close(); } @Test public void Test1() throws IOException { //加载核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig.xml"); //获得sqlSession工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //获得sqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //执行sql语句 List<User> userList = sqlSession.selectList("userMapper.findAll"); //打印结果 System.out.println(userList); //释放资源 sqlSession.close(); } }
然后给个总结:Mapper映射文件中的<mapper namespace="userMapper"> 这一行中的namespace,是需要和dao层对应的实体的全限定名(包名+类名)对应起来的,这里并没有对应,然后是每一个select、update、delete、的id是需要和Dao层的接口的名字对应起来,这里也没有对应,甚至都没有提到Dao,只是一个快速入门。
然后说以下配置文件 Mapper映射文件中,需要注意的是namespace,以及每个select、update、delete的id。
SqlMapperConfig配置文件中常用的: