模糊查询
项目代码根据入门案例修改,这里只填写修改的内容
**
**
修改映射文件的查询:
<select id="findUserByName" parameterType="String" resultType="com.szl.model.User">
SELECT * from user where username like '%${value}%'
</select>
测试类中修改的语句:
/*
* 查询多条记录
* */
@Test
public void test1() throws IOException {
* d) 调用SqlSession的操作数据库方法。
User user=session.selectOne("findUserById",10);
System.out.println(user);
List<User> users=session.selectList("findUserByName","张");
System.out.println(users);
}
插入
映射文件:
<!--插入数据-->
<!--这里的占位写的是模型的属性-->
<insert id="insertUser" parameterType="com.szl.model.User">
insert into user (username,sex,birthday,address)
values (#{username},#{sex},#{birthday},#{address});
</insert>
测试类:
public class Demo2 {
SqlSession session;
@Before
public void before() throws IOException {
System.out.println("before......获取session");
// * a) 读取配置文件;
InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");
// * b) 通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(is);
// * c) 通过SqlSessionFactory创建SqlSession。
session=factory.openSession();
}
@After
public void after(){
System.out.println("after......关闭session");
// * e) 关闭SqlSession。
session.close();
}
/*
* 插入数据
* */
@Test
public void test2() throws IOException {
User user=new User("abc","1",new Date(),"广州");
session.insert("insertUser",user);
session.commit();//提交事务,如果执行操作数据库没有变化就执行这个方法
}
}
删除
映射文件:
<!--删除数据-->
<delete id="deleteUser" parameterType="int">
delete from user where id=#{ids};
</delete>
测试类:
/*
* 删除用户
* */
@Test
public void Test3() throws IOException{
int i=session.delete("deleteUser",16);
session.commit();
System.out.println("受影响的行数:"+i);
}
修改用户:
映射文件:
<!--修改数据-->
<update id="updateUser" parameterType="com.szl.model.User">
update user set address=#{address},sex=#{sex}
where id=#{id};
</update>
测试:
/*
* 修改用户
* */
@Test
public void test4() throws IOException {
User user=new User();
user.setId(10);
user.setSex("女");
user.setAddress("武汉");
int i= session.update("updateUser",user);
session.commit();
System.out.println("收影响的行数:"+i);
}
插入后返回主键
<insert id="insertUser" parameterType="com.gyf.domain.User">
<!--
[selectKey标签]:通过select查询来生成主键
[keyProperty]:指定存放生成主键的属性
[resultType]:生成主键所对应的Java类型
[order]:指定该查询主键SQL语句的执行顺序,相对于insert语句
[last_insert_id]:MySQL的函数,要配合insert语句一起使用 -->
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
<!-- 如果主键的值是通过MySQL自增机制生成的,那么我们此处不需要再显示的给ID赋值 -->
INSERT INTO USER (username,sex,birthday,address)
VALUES(#{username},#{sex},#{birthday},#{address})
</insert>
映射文件
<!--插入返回id-->
<insert id="insertUser2" parameterType="com.szl.model.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
insert into user (username,sex,birthday,address)
values (#{username},#{sex},#{birthday},#{address});
</insert>
测试类
//* 插入数据后,往模型中设置id
//*
@Test
public void test2() throws IOException {
User user=new User("AAAAA","1",new Date(),"广州");
int i= session.insert("insertUser2",user);
session.commit();
System.out.println("收影响的行数:"+i);
System.out.println("用户id"+user.getId());
}
主键返回自增UUID
注: