Mybatis入门

    科技2022-07-15  103

    文章目录

    UserMapper .java接口类QueryDto .java(封装了User类的一个封装类)User .javaUserMapper.xml(与UserMapper在resource同级目录下)SqlMapperConfig(Mybatis配置)pom.xml(maven配置)MyBatisTest .java 测试类整体框架

    UserMapper .java接口类

    package com.ygkj.dao; import com.ygkj.pojo.QueryDto; import com.ygkj.pojo.User; import java.util.List; public interface UserMapper { /** * 查询所有 * @return */ List<User> findAll(); /* 保存操作 */ void addUser(User user); /* 修改操作 */ void updateUser(User user); /* 删除操作 */ void deleteUser(int id); /* */ User findUserById(int id); /* 查询数据库的总记录条数 */ int selectCount(); /* 根据用户名模糊查询 */ List<User> selectLikeByName(String likename); /* 实体类嵌套实体类查询 */ List<User> findByUser(QueryDto queryDto); }

    QueryDto .java(封装了User类的一个封装类)

    package com.ygkj.pojo; public class QueryDto { private User user; public QueryDto(User user) { this.user = user; } public QueryDto() { } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String toString() { return "QueryDto{" + "user=" + user + '}'; } }

    User .java

    package com.ygkj.pojo; public class User { private Integer id; private String userName; private String passWord; public User(Integer id, String userName, String passWord) { this.id = id; this.userName = userName; this.passWord = passWord; } public User() { } public Integer getId() { return id; } public void setId(Integer 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; } @Override public String toString() { return "User{" + "id=" + id + ", userName='" + userName + '\'' + ", passWord='" + passWord + '\'' + '}'; } }

    UserMapper.xml(与UserMapper在resource同级目录下)

    <?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"> <!--namespace 代表的是命名空间--> <mapper namespace="com.ygkj.dao.UserMapper"> <!-- 数据库的列名colum 和属性名(实体类对应的) --> <!-- <resultMap id="userVo" type="com.ygkj.pojo.User">--> <!-- &lt;!&ndash;主键字段的对应&ndash;&gt;--> <!-- <id property="bid" column="id"></id>--> <!-- &lt;!&ndash;非主键字段的对应&ndash;&gt;--> <!-- <result property="userName" column="username"/>--> <!-- <result property="passWord" column="password"/>--> <!-- </resultMap>--> <!-- <select id="findAll" resultMap="userVo">--> <!-- select *from tb_user;--> <!-- </select>--> <select id="findAll" resultType="com.ygkj.pojo.User"> select *from tb_user; </select> <!-- 添加--> <!-- parameterType接收值的类型--> <!-- select LAST_INSERT_ID(); 在添加语句执行完之后执行 返回添加的主键id--> <!--keyProperty实体类中的id keyColumn数据库中对应的id order执行完添加语句之前还是之后执行--> <insert id="addUser" parameterType="com.ygkj.pojo.User"> <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER"> select LAST_INSERT_ID(); </selectKey> insert into tb_user(username,password) values ( #{userName},#{passWord} ) </insert> <!-- 修改--> <update id="updateUser" parameterType="com.ygkj.pojo.User"> update tb_user set username=#{userName},password=#{passWord} where id=#{id} </update> <!-- 删除--> <delete id="deleteUser" parameterType="int"> delete from tb_user where id=#{id} </delete> <!-- 工具id查询数据--> <select id="findUserById" parameterType="int" resultType="com.ygkj.pojo.User"> select *from tb_user where id=#{id} </select> <!--查询数据库的总记录条数--> <select id="selectCount" resultType="int"> select count(id) from tb_user </select> <!--查询数据库的总记录条数--> <!--'%${value}%'没有预编译sql的过程 会导致sql注入 不建议使用--> <select id="selectLikeByName" resultType="com.ygkj.pojo.User" parameterType="String" > select *from tb_user where username like #{likename} -- select *from tb_user where username like '%${value}%' </select> <!--实体类嵌套实体类查询 --> <select id="findByUser" parameterType="com.ygkj.pojo.QueryDto" resultType="com.ygkj.pojo.User"> select *from tb_user where id=#{user.id} </select> </mapper> <?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"> <!--mybatis中的核心配置文件--> <configuration> <environments default="mysql"> <environment id="mysql"> <!--配置实务相关信息--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源信息( 数据库连接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test01?characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </dataSource> </environment> </environments> <!--映射器--> <mappers> <mapper resource="com/ygkj/dao/UserMapper.xml"></mapper> </mappers> </configuration>

    SqlMapperConfig(Mybatis配置)

    <?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"> <!--mybatis中的核心配置文件--> <configuration> <environments default="mysql"> <environment id="mysql"> <!--配置实务相关信息--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源信息( 数据库连接池)--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test01?characterEncoding=utf-8"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </dataSource> </environment> </environments> <!--映射器--> <mappers> <mapper resource="com/ygkj/dao/UserMapper.xml"></mapper> </mappers> </configuration>

    pom.xml(maven配置)

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ygkj</groupId> <artifactId>mybatis_01</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.28</version> </dependency> <!-- <dependency>--> <!-- <groupId>junit</groupId>--> <!-- <artifactId>junit-dep</artifactId>--> <!-- <version>4.11</version>--> <!-- <scope>test</scope>--> <!-- </dependency>--> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> </dependencies> </project>

    MyBatisTest .java 测试类

    package com.ygkj.test; import com.ygkj.dao.UserMapper; import com.ygkj.pojo.QueryDto; import com.ygkj.pojo.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.jupiter.api.*; import java.io.IOException; import java.io.InputStream; import java.util.List; public class MyBatisTest { InputStream resourceAsStream=null; SqlSession sqlSession=null; UserMapper userMapper=null; //在单元测试之前执行 @BeforeEach public void befores() throws IOException { //通过io流读取配置文件 resourceAsStream = Resources.getResourceAsStream("SqlMapperConfig"); //创建SqlSessionFactory工厂 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(resourceAsStream); //使用工厂来生产sqlsession对象 sqlSession = factory.openSession(); //通过动态代理创建持久层接口的代理对象 userMapper = sqlSession.getMapper(UserMapper.class); //关闭资源,重新返回数据库连接池 } //在单元测试之后执行 @AfterEach public void afters() throws IOException { sqlSession.commit(); resourceAsStream.close(); sqlSession.close(); //关闭资源,重新返回数据库连接池 } @Test //执行具体的操作 public void test01(){ List<User> userList = userMapper.findAll(); for (User user : userList) { System.out.println(user.toString()); } } @Test //执行具体的操作 public void test02(){ User user = new User(); user.setPassWord("ddd"); user.setUserName("ddd"); System.out.println(user); userMapper.addUser(user); System.out.println(user); } @Test //执行具体的操作 public void test03(){ User user = new User(); user.setId(5); user.setPassWord("bbb"); user.setUserName("aaa"); userMapper.updateUser(user); } @Test //执行具体的操作 public void test04(){ userMapper.deleteUser(5); } @Test //根据id查询数据 public void test05(){ User userById = userMapper.findUserById(1); System.out.println(userById); } @Test //根据数据条数 public void test06(){ int i = userMapper.selectCount(); System.out.println(i); } @Test //模糊查询 public void test07(){ List<User> userList = userMapper.selectLikeByName("%张%"); for (User user : userList) { System.out.println(user.toString()); } } /* 实体类嵌套实体类的查询 */ @Test public void test08(){ QueryDto queryDto = new QueryDto(); User user = new User(); user.setId(1); queryDto.setUser(user); List<User> byUser = userMapper.findByUser(queryDto); System.out.println(byUser); } }

    整体框架

    Processed: 0.014, SQL: 8