mybatis入门(实现增删改查)

悠悠 2021-09-19 04:20 659阅读 0赞

目录

1.查询数据库中id=1的记录

2.通过用户名模糊查询记录

3.插入数据

4.根据id修改用户名

5.根据id删除记录

6.使用mybatis开发dao层(查询id为1的记录。对比上面的)


新建javaProject

导入数据库驱动包:

20190430100003118.png

导入mybatis包和它的依赖包:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzIzMjU2_size_16_color_FFFFFF_t_70watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzIzMjU2_size_16_color_FFFFFF_t_70 1

配置约束:https://blog.csdn.net/qq_40323256/article/details/89705297

项目文件如下:

20190430121915938.png 数据库:watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzIzMjU2_size_16_color_FFFFFF_t_70 2

20190430125512784.png

全局配置(SqlMapConfig.xml)

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- mybatis的环境配置,此信息在开发中只需照搬即可 -->
  7. <!-- 在集成spring中是不用这种方式的 -->
  8. <environments default="development">
  9. <environment id="development">
  10. <!-- 配置JDBC事务,此事务由mybatis管理 -->
  11. <transactionManager type="JDBC"></transactionManager>
  12. <!-- 配置连接池,此连接池为mybatis连接池 -->
  13. <dataSource type="POOLED">
  14. <property name="driver" value="com.mysql.jdbc.Driver"/>
  15. <property name="url" value="jdbc:mysql://localhost:3306/web01"/>
  16. <property name="username" value="root"/>
  17. <property name="password" value="root"/>
  18. </dataSource>
  19. </environment>
  20. </environments>
  21. <mappers>
  22. <mapper resource="mapper/UserMapper.xml"/>
  23. <!-- 下面这种方式推荐 -->
  24. <!-- <package name="mapper"/>-->
  25. </mappers>
  26. </configuration>

注意:SqlMapConfig.xml中还可以使用读取配置文件(db.properties)的方式连接数据库,如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 读取配置文件 -->
  7. <properties resource="db.properties"></properties>
  8. <!-- mybatis的环境配置,此信息在开发中只需照搬即可 -->
  9. <!-- 在集成spring中是不用这种方式的 -->
  10. <environments default="development">
  11. <environment id="development">
  12. <!-- 配置JDBC事务,此事务由mybatis管理 -->
  13. <transactionManager type="JDBC"></transactionManager>
  14. <!-- 配置连接池,此连接池为mybatis连接池 -->
  15. <dataSource type="POOLED">
  16. <property name="driver" value="${jdbc.driver}"/>
  17. <property name="url" value="${jdbc.url}"/>
  18. <property name="username" value="${jdbc.username}"/>
  19. <property name="password" value="${jdbc.password}"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <mappers>
  24. <mapper resource="mapper/UserMapper.xml"/>
  25. <!-- 下面这种方式推荐 -->
  26. <!-- <package name="mapper"/>-->
  27. </mappers>
  28. </configuration>

db.properties:

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/web01
  3. jdbc.username=root
  4. jdbc.password=root

1.查询数据库中id=1的记录

UserMapper.xml:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="UserMapper">
  6. <select id="selectUserById" parameterType="Integer" resultType="com.sikiedu.bean.User">
  7. SELECT * FROM user WHERE id =#{id}
  8. </select>
  9. </mapper>

User.java:

  1. package com.sikiedu.bean;
  2. public class User {
  3. private Integer id;
  4. private String username;
  5. private String password;
  6. public Integer getId() {
  7. return id;
  8. }
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. public String getUsername() {
  13. return username;
  14. }
  15. public void setUsername(String username) {
  16. this.username = username;
  17. }
  18. public String getPassword() {
  19. return password;
  20. }
  21. public void setPassword(String password) {
  22. this.password = password;
  23. }
  24. @Override
  25. public String toString() {
  26. return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
  27. }
  28. }

HelloMyBatis.java:

  1. package test;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Test;
  9. import com.sikiedu.bean.User;
  10. public class HelloMyBatis {
  11. @Test
  12. public void Test() throws IOException{
  13. String resource="sqlMapConfig.xml";
  14. InputStream in = Resources.getResourceAsStream(resource);
  15. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  16. SqlSessionFactory ssf=ssfb.build(in);
  17. SqlSession session = ssf.openSession();
  18. User user = session.selectOne("UserMapper.selectUserById",1);
  19. System.out.println(user);
  20. }
  21. }

运行结果:

20190430122407482.png

2.通过用户名模糊查询记录

HelloBatis.java:

  1. @Test
  2. public void Test2() throws IOException{
  3. String resource="sqlMapConfig.xml";
  4. InputStream in = Resources.getResourceAsStream(resource);
  5. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  6. SqlSessionFactory ssf=ssfb.build(in);
  7. SqlSession session = ssf.openSession();
  8. List<User> list = session.selectList("UserMapper.selectUserByName", "李");
  9. for (User u : list) {
  10. System.out.println(u);
  11. }
  12. }

UserMapper.xml:

  1. <!-- ${}字符串拼接 这里不推荐 -->
  2. <!-- #{}占位符 推荐 -->
  3. <select id="selectUserByName" parameterType="String" resultType="com.sikiedu.bean.User">
  4. <!-- SELECT * FROM user WHERE username like '%${value}%' -->
  5. SELECT * FROM user WHERE username like "%"#{name}"%"
  6. </select>

运行结果:

20190430123730137.png

3.插入数据

HelloMyBatis.java:

  1. @Test
  2. public void Test3() throws IOException{
  3. String resource="sqlMapConfig.xml";
  4. InputStream in = Resources.getResourceAsStream(resource);
  5. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  6. SqlSessionFactory ssf=ssfb.build(in);
  7. SqlSession session = ssf.openSession();
  8. User user=new User();
  9. user.setUsername("小明");
  10. user.setPassword("1");
  11. session.insert("UserMapper.insertUser",user);
  12. session.commit();
  13. }

UserMapper.xml:

  1. <insert id="insertUser" parameterType="com.sikiedu.bean.User">
  2. insert into user values(null,#{username},#{password})
  3. </insert>

运行结果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzIzMjU2_size_16_color_FFFFFF_t_70 3

4.根据id修改用户名

HelloMyBatis.java:

  1. @Test
  2. public void Test4() throws IOException{
  3. String resource="sqlMapConfig.xml";
  4. InputStream in = Resources.getResourceAsStream(resource);
  5. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  6. SqlSessionFactory ssf=ssfb.build(in);
  7. SqlSession session = ssf.openSession();
  8. User user=new User();
  9. user.setId(14);
  10. user.setUsername("小疆");
  11. session.insert("UserMapper.updateUser",user);
  12. session.commit();
  13. }

UserMapper.xml:

  1. <update id="updateUser" parameterType="com.sikiedu.bean.User">
  2. update user set username=#{username} where id=#{id}
  3. </update>

运行结果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzIzMjU2_size_16_color_FFFFFF_t_70 4

5.根据id删除记录

HelloMyBatis.java:

  1. @Test
  2. public void Test5() throws IOException{
  3. String resource="sqlMapConfig.xml";
  4. InputStream in = Resources.getResourceAsStream(resource);
  5. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  6. SqlSessionFactory ssf=ssfb.build(in);
  7. SqlSession session = ssf.openSession();
  8. session.delete("UserMapper.deleteUser",14);
  9. session.commit();
  10. }

UserMapper.xml:

  1. <delete id="deleteUser" parameterType="Integer">
  2. delete from user where id=#{id}
  3. </delete>

运行结果:id=14的记录被删除了

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzIzMjU2_size_16_color_FFFFFF_t_70 5

6.使用mybatis开发dao层(查询id为1的记录。对比上面的)

20190430201201666.png

UserDao.java:

  1. package com.sikiedu.dao;
  2. import com.sikiedu.bean.User;
  3. public interface UserDao {
  4. User getUserById(Integer id);
  5. }

UserDaolmpl.java:

  1. package com.sikiedu.dao;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import com.sikiedu.bean.User;
  5. public class UserDaolmpl implements UserDao {
  6. SqlSessionFactory ssf;
  7. public UserDaolmpl(SqlSessionFactory ssf) {
  8. super();
  9. this.ssf = ssf;
  10. }
  11. @Override
  12. public User getUserById(Integer id) {
  13. SqlSession session = ssf.openSession();
  14. return session.selectOne("UserMapper.selectUserById",id);
  15. }
  16. }

UserDaoTest.java:

  1. package test;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. import org.junit.Test;
  8. import com.sikiedu.bean.User;
  9. import com.sikiedu.dao.UserDao;
  10. import com.sikiedu.dao.UserDaolmpl;
  11. public class UserDaoTest {
  12. private static SqlSessionFactory ssf;
  13. static{
  14. String resource="sqlMapConfig.xml";
  15. InputStream in;
  16. try {
  17. in = Resources.getResourceAsStream(resource);
  18. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  19. ssf=ssfb.build(in);
  20. in.close();
  21. } catch (IOException e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. @Test
  26. public void DaoTest(){
  27. UserDao dao=new UserDaolmpl(ssf);
  28. User user=dao.getUserById(1);
  29. System.out.println(user);
  30. }
  31. }

运行结果:

20190430201319553.png

7.包装类

UserVo.java:

  1. package com.sikiedu.bean;
  2. public class UserVo {
  3. private User user;
  4. public User getUser() {
  5. return user;
  6. }
  7. public void setUser(User user) {
  8. this.user = user;
  9. }
  10. }

UserMapper.java:

  1. public User selectUserByUserVo(UserVo vo);

UserMapper.xml:

  1. <select id="selectUserByUserVo" parameterType="com.sikiedu.bean.UserVo" resultType="com.sikiedu.bean.User">
  2. SELECT * FROM user WHERE id =#{user.id}
  3. </select>

MapperTest.java:

  1. @Test
  2. public void Test3() throws IOException{
  3. String resource="sqlMapConfig.xml";
  4. InputStream in = Resources.getResourceAsStream(resource);
  5. SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
  6. SqlSessionFactory ssf=ssfb.build(in);
  7. SqlSession session = ssf.openSession();
  8. UserMapper mapper = session.getMapper(UserMapper.class);
  9. UserVo vo=new UserVo();
  10. User u=new User();
  11. u.setId(1);
  12. vo.setUser(u);
  13. User user = mapper.selectUserByUserVo(vo);
  14. System.out.println(user);
  15. }

运行结果:

20190501121711213.png

发表评论

表情:
评论列表 (有 0 条评论,659人围观)

还没有评论,来说两句吧...

相关阅读