Mybatis_3入门程序的扩展

1.在之前的程序上进行了扩展,可实现以下功能。

  1)通过id查询用户

  2)根据用户名称模糊查询

  3)添加用户

  4)更新用户

  5)删除用户

代码:

user.xml:用来写sql语句等。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatiis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!--写sql语句 -->
 6 <mapper namespace="test"><!-- 命名空间为了防止select的id相同时不知道用哪个,但是如果两个xml里面的命名空间不同,那么就可以分辨出来,用命名空间.id -->
 7 
 8 
 9     <!-- 通过id查询用户 如果有多个select需要用id来区分 用parameterType来设置占位符的格式 resultType来设置返回类型 
10         如果是自动返回,则pojo与数据库里面的表一一对应, mybatis占位符#{} -->
11     <select id="findUserById" parameterType="Integer"
12         resultType="com.me.mybatis.pojo.User">
13         select * from user where id = #{v}
14     </select>
15 
16 
17 
18     <!-- #{}表示占位符 select * from user where id = ? ?=='张三' 两边有单引号 #{}里面随便用 ${}表示字符串拼接 
19         select * from user where username like '%五%' 两边无单引号,${}里面只能写value -->
20     <!--根据用户名称模糊查询 -->
21     <select id="findUserByUserName" parameterType="String"
22         resultType="com.me.mybatis.pojo.User">
23         <!-- select * from user where username like '%${value}%' -->
24         select * from user where username like "%"#{value}"%" <!--这种方式也可以使用,一旦使用#,{}里面可填写任意 -->
25     </select>
26 
27 
28     <!--添加用户 -->
29     <insert id="insertUser" parameterType="com.me.mybatis.pojo.User">
30         <selectKey keyProperty="id" resultType="Integer"
31             order="AFTER">
32             <!-- keypropery 将获取到的值放在哪里 parametertype 类型 order 执行顺序 mysql为AFTER 主键为int型,先保存数据再生成主键 
33                 但是oracle 为BEFORE 先生成id再保存数据 -->
34             select LAST_INSERT_ID()
35         </selectKey>
36         insert into user (username,sex,birthday,address)
37         values(#{username},#{sex},#{birthday},#{address})<!--#{}相当于jquery的${} 从user对象里面获得对应括号的值 -->
38     </insert>
39 
40 
41 
42     <!--更新用户-->
43     <update id="updateUserById"
44         parameterType="com.me.mybatis.pojo.User">
45         update user set
46         username=#{username},sex=#{sex},birthday=#{birthday},address=#{address}
47         where id=#{id}
48     </update>
49     
50     <delete id="deleteUserById" parameterType="Integer">
51     delete from user where id=#{id}
52     </delete>
53 </mapper>
User.xml

SqlMapConfig.xml:核心配置文件,连接数据库

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatiis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org//dtd/mybatis-3-config.dtd">
 5 
 6 <configuration>
 7     <environments default="development">
 8         <environment id="development">
 9             <transactionManager type="JDBC" />
10             <dataSource type="POOLED">
11                 <property name="driver" value="com.mysql.jdbc.Driver" />
12                 <property name="url"
13                     value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
14                 <property name="username" value="root" />
15                 <property name="password" value="root" />
16             </dataSource>
17         </environment>
18     </environments>
19     <!-- mapper文件位置  如果配对了则按住ctrl点击位置会跳跃到文件的位置-->
20     <mappers>
21     <mapper resource="SqlMap/User.xml"/>
22     </mappers>
23 </configuration>
SqlMapConfig.xml

user.java,bean层

 1 package com.me.mybatis.pojo;
 2 import java.io.Serializable;
 3 import java.util.Date;
 4 
 5 public class User implements Serializable {
 6     /**
 7      * 
 8      */
 9     private static final long serialVersionUID = 1L;
10     private int id;//id
11     private String username;// 用户姓名
12     private String sex;// 性别
13     private Date birthday;// 生日
14     private String address;// 地址
15 
16     public int getId() {
17         return id;
18     }
19     public void setId(int id) {
20         this.id = id;
21     }
22     public String getUsername() {
23         return username;
24     }
25     public void setUsername(String username) {
26         this.username = username;
27     }
28     public String getSex() {
29         return sex;
30     }
31     public void setSex(String sex) {
32         this.sex = sex;
33     }
34     public Date getBirthday() {
35         return birthday;
36     }
37     public void setBirthday(Date birthday) {
38         this.birthday = birthday;
39     }
40     public String getAddress() {
41         return address;
42     }
43     public void setAddress(String address) {
44         this.address = address;
45     }
46     @Override
47     public String toString() {
48         return "User [id=" + id + ", username=" + username + ", sex=" + sex
49                 + ", birthday=" + birthday + ", address=" + address + "]";
50     }
51 
52     
53     
54 
55 }
user.java

测试类:

  1 package com.me.mybatis.junit;
  2 
  3 import java.io.InputStream;
  4 import java.util.Date;
  5 import java.util.List;
  6 
  7 import org.apache.ibatis.io.Resources;
  8 import org.apache.ibatis.session.SqlSession;
  9 import org.apache.ibatis.session.SqlSessionFactory;
 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 11 import org.junit.jupiter.api.Test;
 12 
 13 import com.me.mybatis.pojo.User;
 14 
 15 public class MybatisFirstTest {
 16 
 17     @Test
 18     void testMybatis() throws Exception {
 19         // 加载核心配置文件
 20         String resource = "SqlMapConfig.xml";
 21         InputStream resourceAsStream = Resources.getResourceAsStream(resource);
 22         // 创建sqlsessionFactory
 23         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 24         // 创建sqlsession
 25         SqlSession openSession = sqlSessionFactory.openSession();
 26         // 执行sql语句
 27         User user = openSession.selectOne("test.findUserById", 10);
 28         // 输出user
 29         System.out.println(user);
 30     }
 31 
 32     // 通过用户名称模糊查询
 33     @Test
 34     void testFindUserByUserName() throws Exception {
 35         // 加载核心配置文件
 36         String resource = "SqlMapConfig.xml";
 37         InputStream resourceAsStream = Resources.getResourceAsStream(resource);
 38         // 创建sqlsessionFactory
 39         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 40         // 创建sqlsession
 41         SqlSession openSession = sqlSessionFactory.openSession();
 42         // 执行sql语句
 43         List<User> users = openSession.selectList("test.findUserByUserName", "五");
 44         // 输出user
 45         for (User user : users) {
 46             System.out.println(user);
 47         }
 48     }
 49 
 50     // 添加用户
 51     @Test
 52     void testInsertUser() throws Exception {
 53         // 加载核心配置文件
 54         String resource = "SqlMapConfig.xml";
 55         InputStream resourceAsStream = Resources.getResourceAsStream(resource);
 56         // 创建sqlsessionFactory
 57         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 58         // 创建sqlsession
 59         SqlSession openSession = sqlSessionFactory.openSession();
 60         User user = new User();
 61         user.setUsername("宋奇");
 62         user.setAddress("北京昌平区");
 63         user.setSex("男");
 64         user.setBirthday(new Date());
 65         // 执行sql语句
 66         int insert = openSession.insert("test.insertUser", user);
 67         // 提交事务
 68         openSession.commit();
 69         // 输出结果
 70         System.out.println(user.getId());
 71     }
 72 
 73     // 更新用户
 74     @Test
 75     void testUpdateUserById() throws Exception {
 76         // 加载核心配置文件
 77         String resource = "SqlMapConfig.xml";
 78         InputStream resourceAsStream = Resources.getResourceAsStream(resource);
 79         // 创建sqlsessionFactory
 80         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 81         // 创建sqlsession
 82         SqlSession openSession = sqlSessionFactory.openSession();
 83         User user = new User();
 84         user.setId(29);
 85         user.setUsername("宋");
 86         user.setAddress("sssss北京昌平区");
 87         user.setSex("女");
 88         user.setBirthday(new Date());
 89         // 执行sql语句
 90         int insert = openSession.insert("test.updateUserById", user);
 91         // 提交事务
 92         openSession.commit();
 93         // 输出结果
 94         System.out.println(user.getId());
 95     }
 96     
 97     //删除用户
 98     @Test
 99     void testDeleteUserById() throws Exception {
100         // 加载核心配置文件
101         String resource = "SqlMapConfig.xml";
102         InputStream resourceAsStream = Resources.getResourceAsStream(resource);
103         // 创建sqlsessionFactory
104         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
105         // 创建sqlsession
106         SqlSession openSession = sqlSessionFactory.openSession();
107         // 执行sql语句
108         int insert = openSession.insert("test.deleteUserById", 17);
109         // 提交事务
110         openSession.commit();
111         
112     }
113 
114 }
MybatisFirstTest

总结:

parameterType

在映射文件中通过parameterType指定输入 参数的类型。

resultType

在映射文件中通过resultType指定输出结果的类型。

1.1.1 #{}${}

#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojohashmap

如果接收简单类型,#{}中可以写成value或其它名称。

#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

${}表示一个拼接符号,会引用sql注入,所以不建议使用${}

${}接收输入参数,类型可以是简单类型,pojohashmap

如果接收简单类型,${}中只能写成value

${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。

selectOneselectList

selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。

selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne

猜你喜欢

转载自www.cnblogs.com/tkg1314/p/12274038.html