MyBatis入门篇(二)

编码流程

  1.  编写全局配置文件:SqlMapConfifig.xml
  2. 编写映射文件xxxxMapper.xml
  3. 编写 dao 代码: xxxDao 接口、 xxxDaoImpl 实现类
  4. POJO
  5. 单元测试类
需求
 
  1. 根据用户id查询一个用户信息2、根据用户名称模糊查询用户信息列表
  2. 根据用户名称模糊查询用户信息列表
  3. 添加用户

项目搭建

  •  创建工程
  • 添加mybatis.jar包(或依赖)
<dependencies> 
    <!-- mybatis依赖 --> 
    <dependency> 
        <groupId>org.mybatis</groupId> 
        <artifactId>mybatis</artifactId> 
        <version>3.4.6</version> 
    </dependency> 
    <!-- mysql依赖 --> 
    <dependency> 
        <groupId>mysql</groupId> 
        <artifactId>mysql-connector-java</artifactId> 
        <version>5.1.35</version> 
    </dependency> 
    <!-- 单元测试 --> 
    <dependency> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>4.12</version> 
    </dependency> 
</dependencies>
  • SqlMapConfig.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="com/wdt/tools/database/resources/db.properties"></properties>
	<environments default="devlopment">
		<environment id="devlopment">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="${db.driver}"/>
				<property name="url" value="${db.url}"/>
				<property name="username" value="${db.username}"/>
				<property name="password" value="${db.password}"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/wdt/tools/database/resources/mappers/UserMapper.xml"/>
	</mappers>
</configuration>
  • UserMapper.xml
<?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="com.wdt.tools.database.mappers.UserMapper">
	<select id="findUsersByName" parameterType="string" resultType="com.wdt.tools.database.entity.UserMapperEntity">
		select * from tb_user u where user_name like '%${value}%'
	</select>
</mapper>

配置说明:

- parameterType:定义输入参数的Java类型,

- resultType:定义结果映射类型。

- #{}:相当于JDBC中的?占位符

- #{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql

- ${value}:取出参数名为value的值。将${value}占位符替换。

注意:如果是取简单数量类型的参数,括号中的参数名称必须为value

  • POJO类
package com.wdt.tools.database.entity;

public class UserMapperEntity {
	private Long id;
	private String user_name;
	private String password;
	/**省略getter和setter*/
	
	
}
  • Mapper(Dao)类
public interface UserMapper {
	public List<UserMapperEntity> findUsersByName(String name) throws Exception;
}
  • 测试类
public class TestMyBatis {

	private static SqlSessionFactory sessionFactory;
	
	public static void setUp() throws IOException {
		String resource = "com/wdt/tools/database/resources/SqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		sessionFactory = new SqlSessionFactoryBuilder().build(in);
	}
	
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		setUp();
		SqlSession session =  sessionFactory.openSession();
		UserMapper mapper = session.getMapper(UserMapper.class);
		List<UserMapperEntity> users = mapper.findUsersByName("本");
		
		for (UserMapperEntity user : users) {
			System.out.println(user.getUser_name());
		}

	}

}

说明:

生命周期范围

1. sqlsession :方法级别
2. sqlsessionFactory :全局范围(应用级别)
3. sqlsessionFactoryBuilder :方法级别
 
 
 
课外知识:主键返回
 

 

<insert id="insertUser" parameterType="com.kkb.mybatis.po.User"> 
    <!-- selectKey将主键返回,需要再返回 -->    
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
         select LAST_INSERT_ID()
     </selectKey> 
    insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}); 
</insert>
添加 selectKey 标签实现主键返回
  • keyProperty:指定返回的主键,存储在pojo中的哪个属性
  • orderselectKey标签中的sql的执行顺序,是相对与insert语句来说。由于mysql的自增原理,执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after
  • resultType:返回的主键对应的JAVA类型
  • LAST_INSERT_ID():mysql的函数,返回auto_increment自增列新记录id值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_Tian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值