如何用动态代理功能实现英雄数据库的添加删除判存以及修改功能?
1.使用前的准备
新建一个mybatis框架
准备一个数据库
SELECT * FROM userdrop table user; create table user ( id int, name varchar(20), othername varchar(20), job varchar(20) ); insert intouser values (1,'贾克斯','万夫莫开','上单'), (2,'腕豪','妈宝男','上单'), (3,'炼金术士','辣眼睛','上单'), (4,'千珏','可可爱爱','打野'), (5,'卡特林娜','刀锋之舞','中单'), (6,'维克托','三只手','中单'), (7,'德莱厄斯','人头狗','上单'), (8,'悠米','校长','辅助'), (9,'塞纳','卢仙老婆','AD'), (10,'卢仙','塞纳伴侣','AD'), (11,'阿利斯塔','坚实后盾','辅助'), (12,'嘉文四世','落魄皇子','打野'), (13,'拉克丝','拳头女儿','中单'), (14,'伊泽瑞尔','拳头儿子','AD'), (15,'亚托克斯','见谁都能骂两句','上单'), (16,'亚索','0-21-0','中单');
测试环境搭建(少不了这串代码)
`static SqlSession sqlSession;
static {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream("Mybatis.xml");
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
// 设置自动提交
sqlSession = sqlSessionFactory.openSession(true);
}`
2.正式开始
①添加功能
接口部分
/** * 登录的方法, * 需要返回一个对象,因为登录要比对别的内容 * 也要传入一个对象, * @param * @return */ Heroes LoginById(int id);
xml部分
<select id="LoginById" resultType="login_utils.Heroes"> select * from user where id = #{id} </select>
测试部分
`@Test
public void testLoginById(){
int id = 19;
String name = "腕豪";
Heroes heroes = new Heroes();
//这里除了id之外都是null
heroes.setId(id);
//这里面返回的是一个heroes对象,虽然传入的是id,但是返回的是*
Heroes resultSet = sqlSession.selectOne("login.Login.LoginById", id);
//查出是一个封装的类型
System.out.println(resultSet);
//从封装类型中寻找内容,并用这个东西做一系列判断
if (resultSet == null || resultSet.getName()==null ){
System.out.println("用户不存在");
}else {
String newName = resultSet.getName();
if (name.equals(newName)) {
System.out.println("登录成功!");
} else {
System.out.println("登陆失败!");
}
}
}`
②注册功能
接口部分
/** * 注册的方法,返回值只有影响的行数 */ int register(Heroes heroes);
xml部分
<insert id="register"> insert into user values (#{id},#{name},#{othername},#{job}) </insert>
测试部分
`@Test
public void testRegister(){
Heroes heroes = new Heroes();
heroes.setId(20);
heroes.setName("格温");
heroes.setOthername("剪刀妹");
heroes.setJob("上单");
int insert = sqlSession.insert("login.Login.register", heroes);
if (insert>0){
System.out.println("注册成功");
}else {
System.out.println("注册失败");
}
}`
③删除功能
接口部分
/** * 删除英雄的方法 * 也是只有与影响的行数 */ int deleteHeroesByName(String name);
xml部分
<delete id="deleteHeroesByName"> delete from user where name = #{name} </delete>
测试部分
@Test public void testDelete(){ Heroes heroes = new Heroes(); int delete = sqlSession.delete("login.Login.deleteHeroesByName","腕豪"); System.out.println(delete); }
④修改功能
接口部分
/** * 修改英雄的方法 */ int updateHeroByName(String name);
xml部分
<update id="updateHeroByName"> update user set othername = "擦,大哥" where name = #{name} </update>
测试部分
@Test public void testUpdate(){ Heroes heroes = new Heroes(); int update = sqlSession.update("login.Login.updateHeroByName","悠米"); System.out.println(update); }
3.注意
①
sqlSession.方法名("抽象方法的全限定类名","要操作的目标"),这里是我的一个犯错点
②修改SQL语句不熟悉
update user set othername = "擦,大哥" where name = #{name}
本次set和表user全丢了

浙公网安备 33010602011771号