Mybatis基础入门学习

Mybatis基础入门学习

mybatis架构分析

搭建测试mybatis架构

1)下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.jar(数据库驱动),junit-4.9.jar(单元测试)

(2)测试mybatis项目搭建

(3)Jdbc资源文件

1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf-8
3 jdbc.username=账号
4 jdbc.password=密码

4Mybatis核心配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <configuration>
 5     <!-- 数据库资源文件 -->
 6     <properties resource="jdbc.properties"/>
 7 
 8     <!-- 别名:方便映射文件调用 -->
 9     <typeAliases>
10         <!-- 这个有弊端:有多少pojo就要配置多少个 -->
11         <!--<typeAlias type="com.pojo.User" alias="user"/>-->
12         <!-- 所以用包的方式:扫描该包及其子包的所有pojo,并取别名为(如:user或User) -->
13         <package name="com.pojo"/>
14     </typeAliases>
15 
16     <!-- 数据库环境,与Spring整合后,environments标签将废除-->
17     <environments default="development">
18         <environment id="development">
19             <!-- 使用JDBC事务管理 -->
20             <transactionManager type="JDBC"/>
21             <!-- 数据库连接池 -->
22             <dataSource type="POOLED">
23                 <!--<property name="driver" value="com.mysql.jdbc.Driver"/>
24                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
25                 <property name="username" value="root"/>
26                 <property name="password" value="admins"/>-->
27 
28                 <property name="driver" value="${jdbc.driver}"/>
29                 <property name="url" value="${jdbc.url}"/>
30                 <property name="username" value="${jdbc.username}"/>
31                 <property name="password" value="${jdbc.password}"/>
32             </dataSource>
33         </environment>
34     </environments>
35 
36     <!-- 映射器的位置 -->
37     <mappers>
38         <!--<mapper resource="com/mapper/UserMapper.xml"/>-->
39         <!-- 3个属性只能取一个,当为class时,xml文件和接口文件必须文件名一样且在同一个包下 -->
40         <!--<mapper class="com.mapper.UserMapper"/>-->
41         <!-- url:该属性指定mapper在盘符下的绝对路径,不建议使用 -->
42 
43         <!-- 上面的弊端还是会太多配置,导包的原则和class一样 -->
44         <package name="com.mapper"/>
45     </mappers>
46 </configuration>
sqlMapConfig.xml

5)日志文件

1 #日志文件
2 log4j.rootLogger=DEBUG,stdout
3 log4j.logger.org.mybatis=DEBUG
4 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
5 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
6 log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

6)创建一个User

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

7User类的映射器

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4 <!-- 命名空间:用于区分;如test.findUserById -->
 5 <mapper namespace="com.mapper.UserMapper">
 6     <!-- 通过ID查询一个用户 -->
 7     <select id="findUserById" parameterType="Integer" resultType="User">
 8         <!-- #{}:表示占位符 -->
 9         select * from user where id=#{v}
10     </select>
11 
12     <!-- 根据用户名模糊查询用户 -->
13     <select id="findUserByName" parameterType="String" resultType="com.pojo.User">
14         <!-- ${}:表示字符串拼接 -->
15 --         select * from user where username like '%${value}%'
16         <!-- 防sql注入 -->
17         select * from user where username like "%"#{value}"%"
18     </select>
19 
20     <!-- 添加用户 -->
21     <insert id="addUser" parameterType="com.pojo.User">
22         <!-- 获取最新的ID主键 -->
23         <selectKey keyProperty="id" resultType="Integer" order="AFTER">
24           select LAST_INSERT_ID()
25         </selectKey>
26         insert into user (username,birthday,address,sex)
27         values (#{username},#{birthday},#{address},#{sex})
28     </insert>
29 
30     <!-- 更新用户 -->
31     <update id="updateUserById" parameterType="com.pojo.User">
32         update user
33         set username=#{username},birthday=#{birthday},address=#{address},sex=#{sex}
34         where id=#{id}
35     </update>
36 
37     <!-- 删除用户 -->
38     <delete id="delUserById" parameterType="Integer">
39         delete from user where id=#{id}
40     </delete>
41 </mapper>
UserMapper.xml

8)与映射器绑定的接口

 1 package com.mapper;
 2 
 3 import com.pojo.User;
 4 
 5 /**
 6  * @author: 肖德子裕
 7  * @date: 2018/8/30 10:02
 8  * @description: 实现用户增删改查的接口(映射器)
 9  * 遵循四个原则
10  * 1)接口方法名与xml文件标签id一样
11  * 2)方法返回值类型与xml文件一样
12  * 3)方法的参数与xml文件一样
13  * 4)xml文件命名空间与该接口绑定
14  */
15 public interface UserMapper {
16     public User findUserById(Integer id);
17 }
UserMapper

9)测试mybatis实现增删改查

  1 package com.junit;
  2 
  3 import com.pojo.User;
  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 
 10 import java.io.InputStream;
 11 import java.util.Date;
 12 import java.util.List;
 13 
 14 /**
 15  * @author: 肖德子裕
 16  * @date: 2018/8/29 23:18
 17  * @description: 单元测试mybatis的增删改查
 18  */
 19 public class UnitTest {
 20     //根据用户ID查询用户
 21     @Test
 22     public void testMybatis() throws Exception{
 23         //加载核心配置文件
 24         String resource="sqlMapConfig.xml";
 25         InputStream in= Resources.getResourceAsStream(resource);
 26         //创建sqlSessionFactory
 27         SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
 28         //创建sqlSession
 29         SqlSession sqlSession=sqlSessionFactory.openSession();
 30         //执行sql语句
 31         User user=sqlSession.selectOne("com.mapper.UserMapper.findUserById",10);
 32         System.out.println(user);
 33     }
 34 
 35     //根据用户名模糊查询用户
 36     @Test
 37     public void testFindUserByName() throws Exception{
 38         //加载核心配置文件
 39         String resource="sqlMapConfig.xml";
 40         InputStream in= Resources.getResourceAsStream(resource);
 41         //创建sqlSessionFactory
 42         SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
 43         //创建sqlSession
 44         SqlSession sqlSession=sqlSessionFactory.openSession();
 45         //执行sql语句
 46         List<User> users=sqlSession.selectList("com.mapper.UserMapper.findUserByName","五");
 47         for (User user:users){
 48             System.out.println(user);
 49         }
 50     }
 51 
 52     //添加用户
 53     @Test
 54     public void testAddUser() throws Exception{
 55         //加载核心配置文件
 56         String resource="sqlMapConfig.xml";
 57         InputStream in= Resources.getResourceAsStream(resource);
 58         //创建sqlSessionFactory
 59         SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
 60         //创建sqlSession
 61         SqlSession sqlSession=sqlSessionFactory.openSession();
 62         //执行sql语句
 63         User user=new User();
 64         user.setUsername("judy");
 65         user.setSex("男");
 66         user.setBirthday(new Date());
 67         user.setAddress("珠海");
 68         int i=sqlSession.insert("com.mapper.UserMapper.addUser",user);
 69         //提交事务
 70         sqlSession.commit();
 71         System.out.println(user.getId());
 72     }
 73 
 74     //更新用户
 75     @Test
 76     public void testUpdateUserById() throws Exception{
 77         //加载核心配置文件
 78         String resource="sqlMapConfig.xml";
 79         InputStream in= Resources.getResourceAsStream(resource);
 80         //创建sqlSessionFactory
 81         SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
 82         //创建sqlSession
 83         SqlSession sqlSession=sqlSessionFactory.openSession();
 84         //执行sql语句
 85         User user=new User();
 86         user.setId(28);
 87         user.setUsername("judy");
 88         user.setSex("女");
 89         user.setBirthday(new Date());
 90         user.setAddress("珠海");
 91         int i=sqlSession.update("com.mapper.UserMapper.updateUserById",user);
 92         //提交事务
 93         sqlSession.commit();
 94     }
 95 
 96     //删除用户
 97     @Test
 98     public void testDelUserById() throws Exception{
 99         //加载核心配置文件
100         String resource="sqlMapConfig.xml";
101         InputStream in= Resources.getResourceAsStream(resource);
102         //创建sqlSessionFactory
103         SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
104         //创建sqlSession
105         SqlSession sqlSession=sqlSessionFactory.openSession();
106         //执行sql语句
107         sqlSession.delete("com.mapper.UserMapper.delUserById",28);
108         //提交事务
109         sqlSession.commit();
110     }
111 }
UnitTest

猜你喜欢

转载自www.cnblogs.com/xdzy/p/9559365.html